Locks Antigravity as the Declarative-CLI reference host through the public Host-Integration Interface (#1682 AC): profileOf(antigravity axes) === 'declarative-cli'; createDeclarativeAdapter({runtime:'antigravity'}) classifies as kind:'declarative'; a real install emits a gsd command/skill surface (nested gsd-ns-* router layout). Byte-identity vs today's install stays gated by golden-install-parity (all 16 runtimes) + adapter-declarative-equivalence.
68 lines
3.1 KiB
JavaScript
68 lines
3.1 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* Declarative reference host — Antigravity (#1682 Slice 2 / ADR-1239 Phase D).
|
|
*
|
|
* Locks in Antigravity as the Declarative-CLI reference host driven through the
|
|
* PUBLIC Host-Integration Interface (the declarative adapter), per #1682 AC:
|
|
* "invoke a gsd command in the Declarative-CLI reference host (Antigravity)
|
|
* driven by the embedded engine through the public interface, golden-parity
|
|
* vs Claude."
|
|
*
|
|
* Byte-identity of adapter output vs today's install is gated globally by
|
|
* golden-install-parity (all 16 runtimes) + adapter-declarative-equivalence.
|
|
* THIS test is the reference-host dogfood: it (1) classifies Antigravity's
|
|
* profile via profileOf, (2) confirms the public adapter classifies it as
|
|
* declarative, and (3) round-trips a real install proving a gsd command surface
|
|
* is emitted through the same engine the adapter delegates to.
|
|
*/
|
|
|
|
const { test, before } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
const path = require('node:path');
|
|
const { execFileSync } = require('node:child_process');
|
|
|
|
const { profileOf } = require('../gsd-core/bin/lib/host-integration.cjs');
|
|
const { createDeclarativeAdapter } = require('../gsd-core/bin/lib/adapter-declarative.cjs');
|
|
const { cleanup } = require('./helpers.cjs');
|
|
const { walk, runMinimalInstall, BUILD_SCRIPT } = require('./helpers/install-shared.cjs');
|
|
|
|
const DESC = path.join(__dirname, '..', 'capabilities', 'antigravity', 'capability.json');
|
|
|
|
// hooks/dist is gitignored and built (mirrors golden-install-parity harness).
|
|
before(() => {
|
|
execFileSync(process.execPath, [BUILD_SCRIPT], { encoding: 'utf-8', stdio: 'pipe' });
|
|
});
|
|
|
|
test('Antigravity classifies as the declarative-cli reference profile (profileOf)', () => {
|
|
const desc = JSON.parse(fs.readFileSync(DESC, 'utf8'));
|
|
const axes = desc.runtime.hostIntegration;
|
|
assert.ok(axes && axes.embeddingMode, 'antigravity descriptor declares hostIntegration axes');
|
|
assert.equal(profileOf(axes), 'declarative-cli',
|
|
'Antigravity is the Declarative-CLI reference host');
|
|
});
|
|
|
|
test('the public declarative adapter classifies Antigravity as a declarative host', () => {
|
|
const adapter = createDeclarativeAdapter({ runtime: 'antigravity' });
|
|
assert.equal(adapter.kind, 'declarative');
|
|
assert.equal(adapter.runtime, 'antigravity');
|
|
assert.equal(typeof adapter.install, 'function');
|
|
assert.equal(typeof adapter.uninstall, 'function');
|
|
});
|
|
|
|
test('a real Antigravity install emits a gsd command/skill surface (invocable)', () => {
|
|
const { configDir, root } = runMinimalInstall({ runtime: 'antigravity', scope: 'global' });
|
|
try {
|
|
const files = walk(configDir);
|
|
assert.ok(files.length > 0, 'install must emit artifacts');
|
|
// Antigravity uses the nested gsd-ns-* router skill layout as its command
|
|
// surface (CONTEXT.md installer module). Assert a gsd skill/router is present.
|
|
const gsdSurface = files.filter((f) => /gsd/i.test(path.relative(configDir, f)));
|
|
assert.ok(gsdSurface.length > 0,
|
|
'install must emit a gsd command/skill surface (declarative reference)');
|
|
} finally {
|
|
cleanup(root);
|
|
}
|
|
});
|