@acidicsoil/portable-capabilities 0.1.10 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +12 -9
- package/dist-release/cli.js +209 -146
- package/dist-release/cli.js.map +3 -3
- package/dist-release/index.js +209 -146
- package/dist-release/index.js.map +3 -3
- package/package.json +3 -2
package/dist-release/index.js
CHANGED
|
@@ -1997,13 +1997,13 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
1997
1997
|
* @param {string} source - expected values are default/config/env/cli/implied
|
|
1998
1998
|
* @return {Command} `this` command for chaining
|
|
1999
1999
|
*/
|
|
2000
|
-
setOptionValueWithSource(key, value,
|
|
2000
|
+
setOptionValueWithSource(key, value, source2) {
|
|
2001
2001
|
if (this._storeOptionsAsProperties) {
|
|
2002
2002
|
this[key] = value;
|
|
2003
2003
|
} else {
|
|
2004
2004
|
this._optionValues[key] = value;
|
|
2005
2005
|
}
|
|
2006
|
-
this._optionValueSources[key] =
|
|
2006
|
+
this._optionValueSources[key] = source2;
|
|
2007
2007
|
return this;
|
|
2008
2008
|
}
|
|
2009
2009
|
/**
|
|
@@ -2024,13 +2024,13 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
2024
2024
|
* @return {string}
|
|
2025
2025
|
*/
|
|
2026
2026
|
getOptionValueSourceWithGlobals(key) {
|
|
2027
|
-
let
|
|
2027
|
+
let source2;
|
|
2028
2028
|
this._getCommandAndAncestors().forEach((cmd) => {
|
|
2029
2029
|
if (cmd.getOptionValueSource(key) !== void 0) {
|
|
2030
|
-
|
|
2030
|
+
source2 = cmd.getOptionValueSource(key);
|
|
2031
2031
|
}
|
|
2032
2032
|
});
|
|
2033
|
-
return
|
|
2033
|
+
return source2;
|
|
2034
2034
|
}
|
|
2035
2035
|
/**
|
|
2036
2036
|
* Get user arguments from implied or explicit arguments.
|
|
@@ -2900,8 +2900,8 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
2900
2900
|
const getErrorMessage = (option2) => {
|
|
2901
2901
|
const bestOption = findBestOptionFromValue(option2);
|
|
2902
2902
|
const optionKey = bestOption.attributeName();
|
|
2903
|
-
const
|
|
2904
|
-
if (
|
|
2903
|
+
const source2 = this.getOptionValueSource(optionKey);
|
|
2904
|
+
if (source2 === "env") {
|
|
2905
2905
|
return `environment variable '${bestOption.envVar}'`;
|
|
2906
2906
|
}
|
|
2907
2907
|
return `option '${bestOption.flags}'`;
|
|
@@ -3784,10 +3784,10 @@ async function writeJournal(targetRoot, journal) {
|
|
|
3784
3784
|
);
|
|
3785
3785
|
await rename2(temporary, path9);
|
|
3786
3786
|
}
|
|
3787
|
-
async function copyAtomically(
|
|
3787
|
+
async function copyAtomically(source2, target, mode) {
|
|
3788
3788
|
await mkdir2(dirname3(target), { recursive: true });
|
|
3789
3789
|
const temporary = `${target}.pc-stage-${process.pid}`;
|
|
3790
|
-
await copyFile(
|
|
3790
|
+
await copyFile(source2, temporary);
|
|
3791
3791
|
await chmod(temporary, mode);
|
|
3792
3792
|
await rename2(temporary, target);
|
|
3793
3793
|
}
|
|
@@ -3970,13 +3970,13 @@ async function planReconciliation(options, manifest, desired) {
|
|
|
3970
3970
|
return { writes, removes, preserved, nextManifest };
|
|
3971
3971
|
}
|
|
3972
3972
|
async function backupPath(targetRoot, transactionRoot, path9) {
|
|
3973
|
-
const
|
|
3974
|
-
if (!await pathExists(
|
|
3973
|
+
const source2 = await assertNoSymlinkInPreparedPath(targetRoot, path9);
|
|
3974
|
+
if (!await pathExists(source2)) return false;
|
|
3975
3975
|
await assertNoSymlinkInPreparedPath(targetRoot, path9);
|
|
3976
3976
|
const target = join3(transactionRoot, "backup", path9);
|
|
3977
3977
|
await mkdir2(dirname3(target), { recursive: true });
|
|
3978
3978
|
await assertNoSymlinkInPreparedPath(targetRoot, path9);
|
|
3979
|
-
await copyFile(
|
|
3979
|
+
await copyFile(source2, target);
|
|
3980
3980
|
return true;
|
|
3981
3981
|
}
|
|
3982
3982
|
async function restoreTransaction(targetRoot, transactionRoot, mutations, manifestHadOriginal, options) {
|
|
@@ -8143,11 +8143,11 @@ var getToStream = (destination7, to = "stdin") => {
|
|
|
8143
8143
|
}
|
|
8144
8144
|
return destinationStream;
|
|
8145
8145
|
};
|
|
8146
|
-
var getFromStream = (
|
|
8146
|
+
var getFromStream = (source2, from = "stdout") => {
|
|
8147
8147
|
const isWritable = false;
|
|
8148
|
-
const { options, fileDescriptors } = SUBPROCESS_OPTIONS.get(
|
|
8148
|
+
const { options, fileDescriptors } = SUBPROCESS_OPTIONS.get(source2);
|
|
8149
8149
|
const fdNumber = getFdNumber(fileDescriptors, from, isWritable);
|
|
8150
|
-
const sourceStream = fdNumber === "all" ?
|
|
8150
|
+
const sourceStream = fdNumber === "all" ? source2.all : source2.stdio[fdNumber];
|
|
8151
8151
|
if (sourceStream === null || sourceStream === void 0) {
|
|
8152
8152
|
throw new TypeError(getInvalidStdioOptionMessage(fdNumber, from, options, isWritable));
|
|
8153
8153
|
}
|
|
@@ -9849,17 +9849,17 @@ var PASSTHROUGH_LISTENERS_PER_STREAM = 1;
|
|
|
9849
9849
|
|
|
9850
9850
|
// node_modules/.pnpm/execa@10.0.0/node_modules/execa/lib/io/pipeline.js
|
|
9851
9851
|
import { finished as finished3 } from "node:stream/promises";
|
|
9852
|
-
var pipeStreams = (
|
|
9853
|
-
|
|
9854
|
-
onSourceFinish(
|
|
9855
|
-
onDestinationFinish(
|
|
9852
|
+
var pipeStreams = (source2, destination7) => {
|
|
9853
|
+
source2.pipe(destination7);
|
|
9854
|
+
onSourceFinish(source2, destination7);
|
|
9855
|
+
onDestinationFinish(source2, destination7);
|
|
9856
9856
|
};
|
|
9857
|
-
var onSourceFinish = async (
|
|
9858
|
-
if (isStandardStream(
|
|
9857
|
+
var onSourceFinish = async (source2, destination7) => {
|
|
9858
|
+
if (isStandardStream(source2) || isStandardStream(destination7)) {
|
|
9859
9859
|
return;
|
|
9860
9860
|
}
|
|
9861
9861
|
try {
|
|
9862
|
-
await finished3(
|
|
9862
|
+
await finished3(source2, { cleanup: true, readable: true, writable: false });
|
|
9863
9863
|
} catch {
|
|
9864
9864
|
}
|
|
9865
9865
|
endDestinationStream(destination7);
|
|
@@ -9869,19 +9869,19 @@ var endDestinationStream = (destination7) => {
|
|
|
9869
9869
|
destination7.end();
|
|
9870
9870
|
}
|
|
9871
9871
|
};
|
|
9872
|
-
var onDestinationFinish = async (
|
|
9873
|
-
if (isStandardStream(
|
|
9872
|
+
var onDestinationFinish = async (source2, destination7) => {
|
|
9873
|
+
if (isStandardStream(source2) || isStandardStream(destination7)) {
|
|
9874
9874
|
return;
|
|
9875
9875
|
}
|
|
9876
9876
|
try {
|
|
9877
9877
|
await finished3(destination7, { cleanup: true, readable: false, writable: true });
|
|
9878
9878
|
} catch {
|
|
9879
9879
|
}
|
|
9880
|
-
abortSourceStream(
|
|
9880
|
+
abortSourceStream(source2);
|
|
9881
9881
|
};
|
|
9882
|
-
var abortSourceStream = (
|
|
9883
|
-
if (
|
|
9884
|
-
|
|
9882
|
+
var abortSourceStream = (source2) => {
|
|
9883
|
+
if (source2.readable) {
|
|
9884
|
+
source2.destroy();
|
|
9885
9885
|
}
|
|
9886
9886
|
};
|
|
9887
9887
|
|
|
@@ -10605,7 +10605,7 @@ var createWritableStream = (subprocess, writableOptions) => Writable3.toWeb(subp
|
|
|
10605
10605
|
var createTransformStream = (subprocess, duplexOptions) => Duplex3.toWeb(subprocess.duplex(duplexOptions));
|
|
10606
10606
|
|
|
10607
10607
|
// node_modules/.pnpm/execa@10.0.0/node_modules/execa/lib/pipe/pipe-arguments.js
|
|
10608
|
-
var normalizePipeArguments = ({ source:
|
|
10608
|
+
var normalizePipeArguments = ({ source: source2, sourcePromise, boundOptions, createNested }, ...pipeArguments) => {
|
|
10609
10609
|
const startTime = getStartTime();
|
|
10610
10610
|
const {
|
|
10611
10611
|
destination: destination7,
|
|
@@ -10614,8 +10614,8 @@ var normalizePipeArguments = ({ source: source3, sourcePromise, boundOptions, cr
|
|
|
10614
10614
|
from,
|
|
10615
10615
|
unpipeSignal
|
|
10616
10616
|
} = getDestinationStream(boundOptions, createNested, pipeArguments);
|
|
10617
|
-
const { sourceStream, sourceError } = getSourceStream(
|
|
10618
|
-
const { options: sourceOptions, fileDescriptors } = SUBPROCESS_OPTIONS.get(
|
|
10617
|
+
const { sourceStream, sourceError } = getSourceStream(source2, from);
|
|
10618
|
+
const { options: sourceOptions, fileDescriptors } = SUBPROCESS_OPTIONS.get(source2);
|
|
10619
10619
|
return {
|
|
10620
10620
|
sourcePromise,
|
|
10621
10621
|
sourceStream,
|
|
@@ -10668,9 +10668,9 @@ var getDestination = (boundOptions, createNested, firstArgument, ...pipeArgument
|
|
|
10668
10668
|
throw new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${firstArgument}`);
|
|
10669
10669
|
};
|
|
10670
10670
|
var mapDestinationArguments = ({ options }) => ({ options: { ...options, stdin: "pipe", piped: true } });
|
|
10671
|
-
var getSourceStream = (
|
|
10671
|
+
var getSourceStream = (source2, from) => {
|
|
10672
10672
|
try {
|
|
10673
|
-
const sourceStream = getFromStream(
|
|
10673
|
+
const sourceStream = getFromStream(source2, from);
|
|
10674
10674
|
return { sourceStream };
|
|
10675
10675
|
} catch (error) {
|
|
10676
10676
|
return { sourceError: error };
|
|
@@ -12153,6 +12153,15 @@ function resolveRuntimeEvidence(claim4, runtimeVersion) {
|
|
|
12153
12153
|
reason: !applicable ? "version-inapplicable" : !sufficientState ? "insufficient-evidence" : !verified ? "unverified" : !confident ? "low-confidence" : !sourceComplete ? "incomplete-source" : claim4.stability === "deprecated" ? "deprecated" : "usable"
|
|
12154
12154
|
};
|
|
12155
12155
|
}
|
|
12156
|
+
function areRuntimeEvidenceClaimsUsable(claimIds, runtimeId, claims, runtimeVersion) {
|
|
12157
|
+
if (claimIds.length === 0) return false;
|
|
12158
|
+
return claimIds.every((claimId) => {
|
|
12159
|
+
const claim4 = claims.find(
|
|
12160
|
+
(candidate) => candidate.id === claimId && candidate.runtimeId === runtimeId
|
|
12161
|
+
);
|
|
12162
|
+
return claim4 !== void 0 && resolveRuntimeEvidence(claim4, runtimeVersion).usableForAutomaticInstall;
|
|
12163
|
+
});
|
|
12164
|
+
}
|
|
12156
12165
|
|
|
12157
12166
|
// packages/compiler/src/negotiation/adapter-registry.ts
|
|
12158
12167
|
var adapterIds = Object.freeze([
|
|
@@ -12175,7 +12184,9 @@ function negotiateCapability(artifact, descriptor, claims, version) {
|
|
|
12175
12184
|
return artifact.invocationIntents.map((intent) => {
|
|
12176
12185
|
const surface = descriptor.surfaces.find(
|
|
12177
12186
|
(x) => x.semanticKind === intent && (x.versionRange === void 0 || isRuntimeVersionInRange(x.versionRange, version)) && x.evidenceClaimIds.some((claimId) => {
|
|
12178
|
-
const claim4 = claims.find(
|
|
12187
|
+
const claim4 = claims.find(
|
|
12188
|
+
(candidate) => candidate.id === claimId && candidate.runtimeId === descriptor.id
|
|
12189
|
+
);
|
|
12179
12190
|
return claim4 !== void 0 && resolveRuntimeEvidence(claim4, version).reason !== "version-inapplicable";
|
|
12180
12191
|
})
|
|
12181
12192
|
);
|
|
@@ -12192,8 +12203,12 @@ function negotiateCapability(artifact, descriptor, claims, version) {
|
|
|
12192
12203
|
evidenceClaimIds: [],
|
|
12193
12204
|
reason: "no matching surface"
|
|
12194
12205
|
};
|
|
12195
|
-
const
|
|
12196
|
-
|
|
12206
|
+
const usable = areRuntimeEvidenceClaimsUsable(
|
|
12207
|
+
surface.evidenceClaimIds,
|
|
12208
|
+
descriptor.id,
|
|
12209
|
+
claims,
|
|
12210
|
+
version
|
|
12211
|
+
);
|
|
12197
12212
|
const degraded = descriptor.degradation.find((d) => d.from === intent);
|
|
12198
12213
|
return {
|
|
12199
12214
|
intent,
|
|
@@ -12454,7 +12469,22 @@ function planSetup(request, artifact, descriptor, claims, ownershipManifest) {
|
|
|
12454
12469
|
request.runtimeVersion
|
|
12455
12470
|
);
|
|
12456
12471
|
const projectionPlan = planProjection(artifact, descriptor.id, request.scope, negotiations);
|
|
12457
|
-
const
|
|
12472
|
+
const evidenceBackedDescriptor = {
|
|
12473
|
+
...descriptor,
|
|
12474
|
+
locations: descriptor.locations.filter(
|
|
12475
|
+
(location) => location.installation === "manual" || location.installation === "unsupported" || areRuntimeEvidenceClaimsUsable(
|
|
12476
|
+
location.evidenceClaimIds,
|
|
12477
|
+
descriptor.id,
|
|
12478
|
+
policyClaims,
|
|
12479
|
+
request.runtimeVersion
|
|
12480
|
+
)
|
|
12481
|
+
)
|
|
12482
|
+
};
|
|
12483
|
+
const baseInstallationPlan = planInstallation(
|
|
12484
|
+
projectionPlan,
|
|
12485
|
+
evidenceBackedDescriptor,
|
|
12486
|
+
request.runtimeVersion
|
|
12487
|
+
);
|
|
12458
12488
|
const mutatingIntent = request.intent === "setup" || request.intent === "update";
|
|
12459
12489
|
let installationPlan = mutatingIntent ? baseInstallationPlan : { ...baseInstallationPlan, operations: [] };
|
|
12460
12490
|
if (request.intent === "remove") {
|
|
@@ -12640,7 +12670,7 @@ async function resolveVerifiedCapabilityEntrypoint(options) {
|
|
|
12640
12670
|
}
|
|
12641
12671
|
|
|
12642
12672
|
// packages/cli/src/release.ts
|
|
12643
|
-
var cliVersion = true ? "0.1.
|
|
12673
|
+
var cliVersion = true ? "0.1.15" : createRequire(import.meta.url)("../../../package.json").version;
|
|
12644
12674
|
|
|
12645
12675
|
// packages/adapters/src/antigravity/materialize.ts
|
|
12646
12676
|
import { resolve as resolve4 } from "node:path";
|
|
@@ -12799,7 +12829,7 @@ var antigravityRuntimeDescriptor = {
|
|
|
12799
12829
|
schemaVersion: "1.0",
|
|
12800
12830
|
id: "antigravity",
|
|
12801
12831
|
aliases: ["google-antigravity", "antigravity-cli"],
|
|
12802
|
-
supportedVersions: [">=2.0.0"],
|
|
12832
|
+
supportedVersions: [">=1.1.4 <2.0.0"],
|
|
12803
12833
|
locations: [
|
|
12804
12834
|
{
|
|
12805
12835
|
id: "antigravity-project-skills",
|
|
@@ -12898,11 +12928,11 @@ var antigravityRuntimeDescriptor = {
|
|
|
12898
12928
|
evidenceState: "source-observed"
|
|
12899
12929
|
},
|
|
12900
12930
|
{
|
|
12901
|
-
id: "antigravity-
|
|
12931
|
+
id: "antigravity-workspace-rules",
|
|
12902
12932
|
semanticKind: "rule",
|
|
12903
12933
|
integrationMode: "declarative",
|
|
12904
12934
|
adapterId: markdown,
|
|
12905
|
-
discovery: "
|
|
12935
|
+
discovery: "Workspace rules may be discovered from .agents/rules when verified for a supported client.",
|
|
12906
12936
|
invocation: "Rules apply according to their activation mode.",
|
|
12907
12937
|
precedence: ["workspace", "global"],
|
|
12908
12938
|
evidenceClaimIds: ["antigravity.cli.discovery.rules"],
|
|
@@ -12910,11 +12940,11 @@ var antigravityRuntimeDescriptor = {
|
|
|
12910
12940
|
evidenceState: "source-observed"
|
|
12911
12941
|
},
|
|
12912
12942
|
{
|
|
12913
|
-
id: "antigravity-
|
|
12943
|
+
id: "antigravity-workspace-agents",
|
|
12914
12944
|
semanticKind: "agent",
|
|
12915
12945
|
integrationMode: "declarative",
|
|
12916
12946
|
adapterId: markdown,
|
|
12917
|
-
discovery: "
|
|
12947
|
+
discovery: "Workspace agents may be discovered from .agents/agents when verified for a supported client.",
|
|
12918
12948
|
invocation: "Invoke through the native subagent interface.",
|
|
12919
12949
|
precedence: ["workspace", "global"],
|
|
12920
12950
|
evidenceClaimIds: ["antigravity.cli.discovery.agents"],
|
|
@@ -12922,11 +12952,11 @@ var antigravityRuntimeDescriptor = {
|
|
|
12922
12952
|
evidenceState: "source-observed"
|
|
12923
12953
|
},
|
|
12924
12954
|
{
|
|
12925
|
-
id: "antigravity-
|
|
12955
|
+
id: "antigravity-workspace-hooks",
|
|
12926
12956
|
semanticKind: "hook",
|
|
12927
12957
|
integrationMode: "declarative",
|
|
12928
12958
|
adapterId: hook,
|
|
12929
|
-
discovery: "hooks.json
|
|
12959
|
+
discovery: "Workspace hooks may be discovered from hooks.json when verified for a supported client.",
|
|
12930
12960
|
invocation: "Hooks participate in native tool and invocation events.",
|
|
12931
12961
|
precedence: ["workspace", "global", "plugin"],
|
|
12932
12962
|
evidenceClaimIds: ["antigravity.cli.hooks"],
|
|
@@ -12934,11 +12964,11 @@ var antigravityRuntimeDescriptor = {
|
|
|
12934
12964
|
evidenceState: "source-observed"
|
|
12935
12965
|
},
|
|
12936
12966
|
{
|
|
12937
|
-
id: "antigravity-
|
|
12967
|
+
id: "antigravity-workspace-mcp",
|
|
12938
12968
|
semanticKind: "mcp",
|
|
12939
12969
|
integrationMode: "declarative",
|
|
12940
12970
|
adapterId: mcp,
|
|
12941
|
-
discovery: "mcp_config.json
|
|
12971
|
+
discovery: "Workspace MCP may be discovered from mcp_config.json when verified for a supported client.",
|
|
12942
12972
|
invocation: "MCP servers are exposed as native tools.",
|
|
12943
12973
|
precedence: ["workspace", "global"],
|
|
12944
12974
|
evidenceClaimIds: ["antigravity.cli.mcp"],
|
|
@@ -12986,148 +13016,148 @@ var antigravityRuntimeDescriptor = {
|
|
|
12986
13016
|
// packages/adapters/src/antigravity/runtime-evidence.ts
|
|
12987
13017
|
import { createHash as createHash9 } from "node:crypto";
|
|
12988
13018
|
var digest2 = (value) => createHash9("sha256").update(value).digest("hex");
|
|
12989
|
-
var retrievedAt = "2026-08-
|
|
12990
|
-
var
|
|
12991
|
-
var
|
|
12992
|
-
|
|
12993
|
-
|
|
12994
|
-
|
|
12995
|
-
|
|
12996
|
-
|
|
12997
|
-
|
|
12998
|
-
|
|
12999
|
-
|
|
13000
|
-
|
|
13001
|
-
|
|
13002
|
-
|
|
13003
|
-
|
|
13004
|
-
|
|
13005
|
-
|
|
13006
|
-
|
|
13007
|
-
|
|
13008
|
-
|
|
13019
|
+
var retrievedAt = "2026-08-15T00:00:00.000Z";
|
|
13020
|
+
var cliVersionRange = ">=1.1.4 <2.0.0";
|
|
13021
|
+
var cliDocs = "https://codelabs.developers.google.com/antigravity/how-to-create-agent-skills-for-antigravity-cli";
|
|
13022
|
+
var productDocs = "https://www.antigravity.google/product/antigravity-cli";
|
|
13023
|
+
var sourceClaim = (id, category, subject, assertion, locator, options = {}) => {
|
|
13024
|
+
const state = options.state ?? "source-observed";
|
|
13025
|
+
return {
|
|
13026
|
+
schemaVersion: "1.0",
|
|
13027
|
+
id,
|
|
13028
|
+
runtimeId: "antigravity",
|
|
13029
|
+
category,
|
|
13030
|
+
subject,
|
|
13031
|
+
assertion,
|
|
13032
|
+
versionRange: options.versionRange ?? cliVersionRange,
|
|
13033
|
+
sourceType: "official-docs",
|
|
13034
|
+
source: options.source ?? cliDocs,
|
|
13035
|
+
sourceLocator: locator,
|
|
13036
|
+
sourceDigest: digest2(`${id}:${assertion}:${locator}`),
|
|
13037
|
+
state,
|
|
13038
|
+
confidence: state === "unknown" ? "low" : "high",
|
|
13039
|
+
verificationStatus: state === "unknown" ? "unverified" : "verified",
|
|
13040
|
+
stability: state === "unknown" ? "version-gated" : "stable",
|
|
13041
|
+
verifiedAt: retrievedAt
|
|
13042
|
+
};
|
|
13043
|
+
};
|
|
13009
13044
|
var antigravityRuntimeEvidence = [
|
|
13010
13045
|
sourceClaim(
|
|
13011
13046
|
"antigravity.location.project-skills",
|
|
13012
13047
|
"location",
|
|
13013
13048
|
"workspace skill root",
|
|
13014
|
-
"Antigravity discovers workspace skills beneath .agents/skills.",
|
|
13015
|
-
"
|
|
13049
|
+
"Antigravity CLI discovers workspace skills beneath .agents/skills.",
|
|
13050
|
+
"Skill location: .agents/skills/<skill-name>/SKILL.md"
|
|
13016
13051
|
),
|
|
13017
13052
|
sourceClaim(
|
|
13018
13053
|
"antigravity.location.project-rules",
|
|
13019
13054
|
"location",
|
|
13020
13055
|
"workspace rule root",
|
|
13021
|
-
"
|
|
13022
|
-
"
|
|
13056
|
+
"The native workspace rule path is not established by the verified CLI skill documentation.",
|
|
13057
|
+
"Workspace rule path: not established",
|
|
13058
|
+
{ source: productDocs, state: "unknown" }
|
|
13023
13059
|
),
|
|
13024
13060
|
sourceClaim(
|
|
13025
13061
|
"antigravity.location.project-agents",
|
|
13026
13062
|
"location",
|
|
13027
13063
|
"workspace agent root",
|
|
13028
|
-
"
|
|
13029
|
-
"
|
|
13064
|
+
"The native workspace agent path is not established by the verified CLI skill documentation.",
|
|
13065
|
+
"Workspace agent path: not established",
|
|
13066
|
+
{ source: productDocs, state: "unknown" }
|
|
13030
13067
|
),
|
|
13031
13068
|
sourceClaim(
|
|
13032
13069
|
"antigravity.location.project-hooks",
|
|
13033
13070
|
"location",
|
|
13034
13071
|
"workspace hook config",
|
|
13035
|
-
"
|
|
13036
|
-
"
|
|
13072
|
+
"The native workspace hook path is not established by the verified CLI skill documentation.",
|
|
13073
|
+
"Workspace hook path: not established",
|
|
13074
|
+
{ source: productDocs, state: "unknown" }
|
|
13037
13075
|
),
|
|
13038
13076
|
sourceClaim(
|
|
13039
13077
|
"antigravity.location.project-mcp",
|
|
13040
13078
|
"location",
|
|
13041
13079
|
"workspace MCP config",
|
|
13042
|
-
"
|
|
13043
|
-
"
|
|
13080
|
+
"The native workspace MCP configuration path is not established by the verified CLI skill documentation.",
|
|
13081
|
+
"Workspace MCP path: not established",
|
|
13082
|
+
{ source: productDocs, state: "unknown" }
|
|
13044
13083
|
),
|
|
13045
13084
|
sourceClaim(
|
|
13046
13085
|
"antigravity.location.plugins",
|
|
13047
13086
|
"location",
|
|
13048
13087
|
"CLI plugin staging root",
|
|
13049
|
-
"
|
|
13050
|
-
"
|
|
13088
|
+
"The native CLI plugin staging path is not established by the verified CLI skill documentation.",
|
|
13089
|
+
"CLI plugin staging path: not established",
|
|
13090
|
+
{ source: productDocs, state: "unknown" }
|
|
13051
13091
|
),
|
|
13052
13092
|
sourceClaim(
|
|
13053
13093
|
"antigravity.workflow.storage",
|
|
13054
13094
|
"location",
|
|
13055
13095
|
"workflow storage",
|
|
13056
13096
|
"Workflow physical storage path is not established by primary public documentation.",
|
|
13057
|
-
"
|
|
13058
|
-
"unknown"
|
|
13097
|
+
"Workflow storage path: not established",
|
|
13098
|
+
{ source: productDocs, state: "unknown" }
|
|
13059
13099
|
),
|
|
13060
13100
|
sourceClaim(
|
|
13061
13101
|
"antigravity.cli.discovery.skills",
|
|
13062
13102
|
"discovery",
|
|
13063
13103
|
"CLI skill discovery",
|
|
13064
|
-
"Antigravity CLI discovers project skills from .agents/skills.",
|
|
13065
|
-
"
|
|
13066
|
-
"source-observed",
|
|
13067
|
-
"cli"
|
|
13104
|
+
"Antigravity CLI automatically discovers project skills from .agents/skills.",
|
|
13105
|
+
"Skill discovery and /skills listing"
|
|
13068
13106
|
),
|
|
13069
13107
|
sourceClaim(
|
|
13070
13108
|
"antigravity.cli.invocation.skills",
|
|
13071
13109
|
"invocation",
|
|
13072
13110
|
"CLI skill invocation",
|
|
13073
|
-
"Antigravity CLI
|
|
13074
|
-
"
|
|
13075
|
-
"source-observed",
|
|
13076
|
-
"cli"
|
|
13111
|
+
"Antigravity CLI can list and invoke a discovered skill from the project workspace.",
|
|
13112
|
+
"Launch with agy; invoke through the skill-aware CLI workflow"
|
|
13077
13113
|
),
|
|
13078
13114
|
sourceClaim(
|
|
13079
13115
|
"antigravity.ide.discovery.skills",
|
|
13080
13116
|
"discovery",
|
|
13081
13117
|
"IDE skill discovery",
|
|
13082
|
-
"
|
|
13083
|
-
"
|
|
13084
|
-
|
|
13085
|
-
"ide"
|
|
13118
|
+
"IDE skill discovery is not established by the verified CLI skill documentation.",
|
|
13119
|
+
"IDE skill discovery: not established",
|
|
13120
|
+
{ source: productDocs, state: "unknown" }
|
|
13086
13121
|
),
|
|
13087
13122
|
sourceClaim(
|
|
13088
13123
|
"antigravity.cli.discovery.rules",
|
|
13089
13124
|
"discovery",
|
|
13090
|
-
"
|
|
13091
|
-
"Workspace
|
|
13092
|
-
"
|
|
13093
|
-
|
|
13094
|
-
"2.0"
|
|
13125
|
+
"workspace rule discovery",
|
|
13126
|
+
"Workspace rule discovery is not established by the verified CLI skill documentation.",
|
|
13127
|
+
"Workspace rule discovery: not established",
|
|
13128
|
+
{ source: productDocs, state: "unknown" }
|
|
13095
13129
|
),
|
|
13096
13130
|
sourceClaim(
|
|
13097
13131
|
"antigravity.cli.discovery.agents",
|
|
13098
13132
|
"discovery",
|
|
13099
|
-
"
|
|
13100
|
-
"
|
|
13101
|
-
"
|
|
13102
|
-
|
|
13103
|
-
"2.0"
|
|
13133
|
+
"workspace agent discovery",
|
|
13134
|
+
"Workspace agent discovery is not established by the verified CLI skill documentation.",
|
|
13135
|
+
"Workspace agent discovery: not established",
|
|
13136
|
+
{ source: productDocs, state: "unknown" }
|
|
13104
13137
|
),
|
|
13105
13138
|
sourceClaim(
|
|
13106
13139
|
"antigravity.cli.hooks",
|
|
13107
13140
|
"hooks",
|
|
13108
|
-
"
|
|
13109
|
-
"Workspace
|
|
13110
|
-
"
|
|
13111
|
-
|
|
13112
|
-
"2.0"
|
|
13141
|
+
"workspace hook registration",
|
|
13142
|
+
"Workspace hook registration is not established by the verified CLI skill documentation.",
|
|
13143
|
+
"Workspace hook registration: not established",
|
|
13144
|
+
{ source: productDocs, state: "unknown" }
|
|
13113
13145
|
),
|
|
13114
13146
|
sourceClaim(
|
|
13115
13147
|
"antigravity.cli.mcp",
|
|
13116
13148
|
"mcp",
|
|
13117
|
-
"
|
|
13118
|
-
"Workspace MCP
|
|
13119
|
-
"
|
|
13120
|
-
|
|
13121
|
-
"2.0"
|
|
13149
|
+
"workspace MCP registration",
|
|
13150
|
+
"Workspace MCP registration is not established by the verified CLI skill documentation.",
|
|
13151
|
+
"Workspace MCP registration: not established",
|
|
13152
|
+
{ source: productDocs, state: "unknown" }
|
|
13122
13153
|
),
|
|
13123
13154
|
sourceClaim(
|
|
13124
13155
|
"antigravity.cli.plugins",
|
|
13125
13156
|
"plugin",
|
|
13126
13157
|
"CLI plugin registration",
|
|
13127
|
-
"CLI
|
|
13128
|
-
"
|
|
13129
|
-
|
|
13130
|
-
"cli"
|
|
13158
|
+
"CLI plugin registration is not established by the verified CLI skill documentation.",
|
|
13159
|
+
"CLI plugin registration: not established",
|
|
13160
|
+
{ source: productDocs, state: "unknown" }
|
|
13131
13161
|
)
|
|
13132
13162
|
];
|
|
13133
13163
|
|
|
@@ -14197,7 +14227,7 @@ async function prepareDCodeMaterialization(plan, root) {
|
|
|
14197
14227
|
|
|
14198
14228
|
// packages/adapters/src/dcode/runtime-descriptor.ts
|
|
14199
14229
|
var markdown3 = "materialize-markdown";
|
|
14200
|
-
var
|
|
14230
|
+
var source = "source-observed";
|
|
14201
14231
|
var dcodeRuntimeDescriptor = {
|
|
14202
14232
|
schemaVersion: "1.0",
|
|
14203
14233
|
id: "dcode",
|
|
@@ -14256,7 +14286,7 @@ var dcodeRuntimeDescriptor = {
|
|
|
14256
14286
|
precedence: ["project"],
|
|
14257
14287
|
evidenceClaimIds: ["dcode.discovery.cli-skill", "dcode.invocation.cli-skill"],
|
|
14258
14288
|
stability: "stable",
|
|
14259
|
-
evidenceState:
|
|
14289
|
+
evidenceState: source
|
|
14260
14290
|
},
|
|
14261
14291
|
{
|
|
14262
14292
|
id: "dcode-cli-instructions",
|
|
@@ -14268,7 +14298,7 @@ var dcodeRuntimeDescriptor = {
|
|
|
14268
14298
|
precedence: ["project"],
|
|
14269
14299
|
evidenceClaimIds: ["dcode.location.project-root"],
|
|
14270
14300
|
stability: "stable",
|
|
14271
|
-
evidenceState:
|
|
14301
|
+
evidenceState: source
|
|
14272
14302
|
},
|
|
14273
14303
|
{
|
|
14274
14304
|
id: "dcode-cli-sync-subagents",
|
|
@@ -14280,7 +14310,7 @@ var dcodeRuntimeDescriptor = {
|
|
|
14280
14310
|
precedence: ["project", "user"],
|
|
14281
14311
|
evidenceClaimIds: ["dcode.cli.sync-subagents"],
|
|
14282
14312
|
stability: "version-gated",
|
|
14283
|
-
evidenceState:
|
|
14313
|
+
evidenceState: source
|
|
14284
14314
|
},
|
|
14285
14315
|
{
|
|
14286
14316
|
id: "dcode-cli-memory",
|
|
@@ -14292,7 +14322,7 @@ var dcodeRuntimeDescriptor = {
|
|
|
14292
14322
|
precedence: ["project", "user"],
|
|
14293
14323
|
evidenceClaimIds: ["dcode.cli.memory"],
|
|
14294
14324
|
stability: "version-gated",
|
|
14295
|
-
evidenceState:
|
|
14325
|
+
evidenceState: source
|
|
14296
14326
|
},
|
|
14297
14327
|
{
|
|
14298
14328
|
id: "dcode-cli-mcp",
|
|
@@ -14304,7 +14334,7 @@ var dcodeRuntimeDescriptor = {
|
|
|
14304
14334
|
precedence: ["project", "user"],
|
|
14305
14335
|
evidenceClaimIds: ["dcode.cli.mcp"],
|
|
14306
14336
|
stability: "version-gated",
|
|
14307
|
-
evidenceState:
|
|
14337
|
+
evidenceState: source
|
|
14308
14338
|
},
|
|
14309
14339
|
{
|
|
14310
14340
|
id: "dcode-cli-configuration",
|
|
@@ -14316,7 +14346,7 @@ var dcodeRuntimeDescriptor = {
|
|
|
14316
14346
|
precedence: ["project", "user"],
|
|
14317
14347
|
evidenceClaimIds: ["dcode.cli.configuration"],
|
|
14318
14348
|
stability: "version-gated",
|
|
14319
|
-
evidenceState:
|
|
14349
|
+
evidenceState: source
|
|
14320
14350
|
},
|
|
14321
14351
|
{
|
|
14322
14352
|
id: "dcode-cli-advisory-hooks",
|
|
@@ -14328,7 +14358,7 @@ var dcodeRuntimeDescriptor = {
|
|
|
14328
14358
|
precedence: ["project", "user"],
|
|
14329
14359
|
evidenceClaimIds: ["dcode.hooks.advisory"],
|
|
14330
14360
|
stability: "version-gated",
|
|
14331
|
-
evidenceState:
|
|
14361
|
+
evidenceState: source
|
|
14332
14362
|
},
|
|
14333
14363
|
{
|
|
14334
14364
|
id: "dcode-sdk-tools",
|
|
@@ -14340,7 +14370,7 @@ var dcodeRuntimeDescriptor = {
|
|
|
14340
14370
|
precedence: ["sdk"],
|
|
14341
14371
|
evidenceClaimIds: ["dcode.sdk.tools"],
|
|
14342
14372
|
stability: "version-gated",
|
|
14343
|
-
evidenceState:
|
|
14373
|
+
evidenceState: source
|
|
14344
14374
|
},
|
|
14345
14375
|
{
|
|
14346
14376
|
id: "dcode-cli-async-subagents",
|
|
@@ -15992,7 +16022,8 @@ var piRuntimeDescriptor = {
|
|
|
15992
16022
|
// packages/adapters/src/pi/runtime-evidence.ts
|
|
15993
16023
|
import { createHash as createHash15 } from "node:crypto";
|
|
15994
16024
|
var digest8 = (value) => createHash15("sha256").update(value).digest("hex");
|
|
15995
|
-
var observedAt2 = "2026-08-
|
|
16025
|
+
var observedAt2 = "2026-08-15T00:00:00.000Z";
|
|
16026
|
+
var skillsDocs = "https://pi.dev/docs/latest/skills";
|
|
15996
16027
|
var piRuntimeEvidence = [
|
|
15997
16028
|
{
|
|
15998
16029
|
schemaVersion: "1.0",
|
|
@@ -16054,13 +16085,13 @@ var piRuntimeEvidence = [
|
|
|
16054
16085
|
runtimeId: "pi",
|
|
16055
16086
|
category: "discovery",
|
|
16056
16087
|
subject: "native skill discovery",
|
|
16057
|
-
assertion: "Pi
|
|
16058
|
-
versionRange: "
|
|
16059
|
-
sourceType: "
|
|
16060
|
-
source:
|
|
16061
|
-
sourceLocator: "
|
|
16062
|
-
sourceDigest: digest8("Pi
|
|
16063
|
-
state: "
|
|
16088
|
+
assertion: "Pi discovers project skills beneath .pi/skills.",
|
|
16089
|
+
versionRange: ">=0.64.0",
|
|
16090
|
+
sourceType: "official-docs",
|
|
16091
|
+
source: skillsDocs,
|
|
16092
|
+
sourceLocator: "Project skills: .pi/skills/",
|
|
16093
|
+
sourceDigest: digest8("Pi project skills .pi/skills official docs"),
|
|
16094
|
+
state: "source-observed",
|
|
16064
16095
|
confidence: "high",
|
|
16065
16096
|
verificationStatus: "verified",
|
|
16066
16097
|
stability: "stable",
|
|
@@ -16072,13 +16103,13 @@ var piRuntimeEvidence = [
|
|
|
16072
16103
|
runtimeId: "pi",
|
|
16073
16104
|
category: "invocation",
|
|
16074
16105
|
subject: "native skill invocation",
|
|
16075
|
-
assertion: "Pi
|
|
16076
|
-
versionRange: "
|
|
16077
|
-
sourceType: "
|
|
16078
|
-
source:
|
|
16079
|
-
sourceLocator: "
|
|
16080
|
-
sourceDigest: digest8("Pi
|
|
16081
|
-
state: "
|
|
16106
|
+
assertion: "Pi loads a discovered skill when its description matches the task or the user invokes /skill:name.",
|
|
16107
|
+
versionRange: ">=0.64.0",
|
|
16108
|
+
sourceType: "official-docs",
|
|
16109
|
+
source: skillsDocs,
|
|
16110
|
+
sourceLocator: "Skill loading and invocation: /skill:name",
|
|
16111
|
+
sourceDigest: digest8("Pi skill invocation official docs"),
|
|
16112
|
+
state: "source-observed",
|
|
16082
16113
|
confidence: "high",
|
|
16083
16114
|
verificationStatus: "verified",
|
|
16084
16115
|
stability: "stable",
|
|
@@ -16225,6 +16256,7 @@ function operationalContract(role) {
|
|
|
16225
16256
|
resources: [
|
|
16226
16257
|
roleFacet(role, "resources"),
|
|
16227
16258
|
"Load [resource:resources/contract.json] for the complete role contract.",
|
|
16259
|
+
"Load [resource:resources/input.schema.json] before interpreting capability inputs.",
|
|
16228
16260
|
"Load [resource:resources/output.schema.json] before constructing the final output."
|
|
16229
16261
|
],
|
|
16230
16262
|
ambiguityAndAbstention: [roleFacet(role, "ambiguity"), roleFacet(role, "abstention")],
|
|
@@ -16269,6 +16301,20 @@ async function loadCanonicalArtifact(catalogRoot, capabilityId) {
|
|
|
16269
16301
|
if (isAbsolute3(schemaRelativePath) || schemaRelativePath.startsWith(".."))
|
|
16270
16302
|
throw new Error(`Canonical output schema escapes catalog: ${role.output.schema}`);
|
|
16271
16303
|
const schemaContent = await readFile6(schemaFile, "utf8");
|
|
16304
|
+
const inputSchemaContent = `${JSON.stringify(
|
|
16305
|
+
{
|
|
16306
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
16307
|
+
type: "object",
|
|
16308
|
+
properties: Object.fromEntries(
|
|
16309
|
+
role.inputs.map((input) => [input.name, { description: input.description }])
|
|
16310
|
+
),
|
|
16311
|
+
required: role.inputs.filter((input) => input.required).map((input) => input.name),
|
|
16312
|
+
additionalProperties: true
|
|
16313
|
+
},
|
|
16314
|
+
null,
|
|
16315
|
+
2
|
|
16316
|
+
)}
|
|
16317
|
+
`;
|
|
16272
16318
|
const contract = operationalContract(role);
|
|
16273
16319
|
const contractContent = `${JSON.stringify(
|
|
16274
16320
|
{ ...role, output: { ...role.output, schema: "resources/output.schema.json" } },
|
|
@@ -16277,6 +16323,13 @@ async function loadCanonicalArtifact(catalogRoot, capabilityId) {
|
|
|
16277
16323
|
)}
|
|
16278
16324
|
`;
|
|
16279
16325
|
const resources = [
|
|
16326
|
+
resource(
|
|
16327
|
+
file,
|
|
16328
|
+
"role.inputs",
|
|
16329
|
+
"resources/input.schema.json",
|
|
16330
|
+
"application/schema+json",
|
|
16331
|
+
inputSchemaContent
|
|
16332
|
+
),
|
|
16280
16333
|
resource(
|
|
16281
16334
|
file,
|
|
16282
16335
|
role.output.schema,
|
|
@@ -16352,6 +16405,14 @@ function renderVerifiedUsage(preview, descriptor, claims, runtimeVersion) {
|
|
|
16352
16405
|
return verified ? `${descriptor.id}: ${surface.invocation}` : `${descriptor.id}: native usage unavailable; use manual guidance`;
|
|
16353
16406
|
});
|
|
16354
16407
|
}
|
|
16408
|
+
function negotiationDiagnostics(previews) {
|
|
16409
|
+
return previews.flatMap(
|
|
16410
|
+
(preview) => preview.negotiations.filter((negotiation) => negotiation.installationMode !== "automatic").map((negotiation) => {
|
|
16411
|
+
const evidence = negotiation.evidenceClaimIds.join(", ") || "no evidence claims";
|
|
16412
|
+
return `${negotiation.intent}: ${negotiation.installationMode} (${negotiation.reason}) [${evidence}]`;
|
|
16413
|
+
})
|
|
16414
|
+
);
|
|
16415
|
+
}
|
|
16355
16416
|
function composeInstallationPlan(previews, artifacts, runtimeId) {
|
|
16356
16417
|
const first = previews[0]?.installationPlan;
|
|
16357
16418
|
if (!first) throw new Error("at least one installation plan is required");
|
|
@@ -16444,15 +16505,17 @@ async function executeSetupSelection(request, artifacts, descriptor, claims, con
|
|
|
16444
16505
|
const duplicatePath = prepared.mutations.map((mutation) => mutation.path).find((path9, index, paths) => paths.indexOf(path9) !== index);
|
|
16445
16506
|
if (duplicatePath)
|
|
16446
16507
|
throw new Error(`Selection produced duplicate prepared path: ${duplicatePath}`);
|
|
16508
|
+
const preparedDiagnostics = [
|
|
16509
|
+
...prepared.diagnostics?.map(
|
|
16510
|
+
(diagnostic6) => `${diagnostic6.kind}: ${diagnostic6.message}`
|
|
16511
|
+
) ?? [],
|
|
16512
|
+
...executionRequest.intent === "remove" ? [] : negotiationDiagnostics(previews)
|
|
16513
|
+
];
|
|
16447
16514
|
return executePreparedInstallation({
|
|
16448
16515
|
...lifecycleOptions,
|
|
16449
16516
|
preparedOperation: executionRequest.intent === "update" ? "upgrade" : executionRequest.intent === "remove" ? "remove" : "install",
|
|
16450
16517
|
preparedMutations: prepared.mutations,
|
|
16451
|
-
...
|
|
16452
|
-
preparedDiagnostics: prepared.diagnostics.map(
|
|
16453
|
-
(diagnostic6) => `${diagnostic6.kind}: ${diagnostic6.message}`
|
|
16454
|
-
)
|
|
16455
|
-
} : {}
|
|
16518
|
+
...preparedDiagnostics.length > 0 ? { preparedDiagnostics } : {}
|
|
16456
16519
|
});
|
|
16457
16520
|
})() : await statusInstallation(targetRoot);
|
|
16458
16521
|
return { request, previews, lifecycle };
|