@agentxm/extension-model 0.36.0 → 0.37.3
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/dist/src/unstable/agent-capabilities/catalog.d.ts +19377 -5019
- package/dist/src/unstable/agent-capabilities/data/agents/adal.d.ts +31 -3
- package/dist/src/unstable/agent-capabilities/data/agents/adal.js +27 -3
- package/dist/src/unstable/agent-capabilities/data/agents/aider-desk.d.ts +19 -2
- package/dist/src/unstable/agent-capabilities/data/agents/aider-desk.js +17 -2
- package/dist/src/unstable/agent-capabilities/data/agents/amp.d.ts +57 -5
- package/dist/src/unstable/agent-capabilities/data/agents/amp.js +53 -5
- package/dist/src/unstable/agent-capabilities/data/agents/antigravity-cli.d.ts +68 -6
- package/dist/src/unstable/agent-capabilities/data/agents/antigravity-cli.js +61 -6
- package/dist/src/unstable/agent-capabilities/data/agents/antigravity.d.ts +179 -53
- package/dist/src/unstable/agent-capabilities/data/agents/antigravity.js +152 -42
- package/dist/src/unstable/agent-capabilities/data/agents/augment.d.ts +176 -64
- package/dist/src/unstable/agent-capabilities/data/agents/augment.js +162 -64
- package/dist/src/unstable/agent-capabilities/data/agents/chatgpt.d.ts +3 -1
- package/dist/src/unstable/agent-capabilities/data/agents/chatgpt.js +3 -1
- package/dist/src/unstable/agent-capabilities/data/agents/claude-ai.d.ts +2 -0
- package/dist/src/unstable/agent-capabilities/data/agents/claude-ai.js +2 -0
- package/dist/src/unstable/agent-capabilities/data/agents/claude-code.d.ts +238 -75
- package/dist/src/unstable/agent-capabilities/data/agents/claude-code.js +222 -78
- package/dist/src/unstable/agent-capabilities/data/agents/cline.d.ts +115 -55
- package/dist/src/unstable/agent-capabilities/data/agents/cline.js +100 -47
- package/dist/src/unstable/agent-capabilities/data/agents/codearts-agent.d.ts +140 -63
- package/dist/src/unstable/agent-capabilities/data/agents/codearts-agent.js +123 -52
- package/dist/src/unstable/agent-capabilities/data/agents/codebuddy.d.ts +211 -76
- package/dist/src/unstable/agent-capabilities/data/agents/codebuddy.js +197 -79
- package/dist/src/unstable/agent-capabilities/data/agents/codestudio.d.ts +46 -4
- package/dist/src/unstable/agent-capabilities/data/agents/codestudio.js +40 -4
- package/dist/src/unstable/agent-capabilities/data/agents/codex.d.ts +242 -68
- package/dist/src/unstable/agent-capabilities/data/agents/codex.js +213 -59
- package/dist/src/unstable/agent-capabilities/data/agents/command-code.d.ts +171 -70
- package/dist/src/unstable/agent-capabilities/data/agents/command-code.js +158 -66
- package/dist/src/unstable/agent-capabilities/data/agents/continue.d.ts +79 -7
- package/dist/src/unstable/agent-capabilities/data/agents/continue.js +75 -7
- package/dist/src/unstable/agent-capabilities/data/agents/cortex.d.ts +116 -9
- package/dist/src/unstable/agent-capabilities/data/agents/cortex.js +110 -9
- package/dist/src/unstable/agent-capabilities/data/agents/cowork.d.ts +4 -0
- package/dist/src/unstable/agent-capabilities/data/agents/cowork.js +4 -0
- package/dist/src/unstable/agent-capabilities/data/agents/crush.d.ts +165 -60
- package/dist/src/unstable/agent-capabilities/data/agents/crush.js +151 -54
- package/dist/src/unstable/agent-capabilities/data/agents/cursor.d.ts +230 -55
- package/dist/src/unstable/agent-capabilities/data/agents/cursor.js +205 -51
- package/dist/src/unstable/agent-capabilities/data/agents/deepagents.d.ts +100 -5
- package/dist/src/unstable/agent-capabilities/data/agents/deepagents.js +86 -5
- package/dist/src/unstable/agent-capabilities/data/agents/devin.d.ts +224 -77
- package/dist/src/unstable/agent-capabilities/data/agents/devin.js +203 -70
- package/dist/src/unstable/agent-capabilities/data/agents/dexto.d.ts +28 -2
- package/dist/src/unstable/agent-capabilities/data/agents/dexto.js +26 -2
- package/dist/src/unstable/agent-capabilities/data/agents/droid.d.ts +93 -8
- package/dist/src/unstable/agent-capabilities/data/agents/droid.js +87 -8
- package/dist/src/unstable/agent-capabilities/data/agents/firebender.d.ts +119 -8
- package/dist/src/unstable/agent-capabilities/data/agents/firebender.js +112 -13
- package/dist/src/unstable/agent-capabilities/data/agents/forgecode.d.ts +94 -6
- package/dist/src/unstable/agent-capabilities/data/agents/forgecode.js +82 -6
- package/dist/src/unstable/agent-capabilities/data/agents/gemini-app.d.ts +2 -0
- package/dist/src/unstable/agent-capabilities/data/agents/gemini-app.js +2 -0
- package/dist/src/unstable/agent-capabilities/data/agents/gemini-cli.d.ts +218 -56
- package/dist/src/unstable/agent-capabilities/data/agents/gemini-cli.js +193 -55
- package/dist/src/unstable/agent-capabilities/data/agents/github-copilot-cli.d.ts +201 -66
- package/dist/src/unstable/agent-capabilities/data/agents/github-copilot-cli.js +188 -69
- package/dist/src/unstable/agent-capabilities/data/agents/goose.d.ts +37 -3
- package/dist/src/unstable/agent-capabilities/data/agents/goose.js +34 -5
- package/dist/src/unstable/agent-capabilities/data/agents/grok-cli.d.ts +98 -6
- package/dist/src/unstable/agent-capabilities/data/agents/grok-cli.js +83 -6
- package/dist/src/unstable/agent-capabilities/data/agents/hermes.d.ts +105 -42
- package/dist/src/unstable/agent-capabilities/data/agents/hermes.js +87 -28
- package/dist/src/unstable/agent-capabilities/data/agents/ibm-bob.d.ts +173 -61
- package/dist/src/unstable/agent-capabilities/data/agents/ibm-bob.js +152 -52
- package/dist/src/unstable/agent-capabilities/data/agents/iflow-cli.d.ts +47 -5
- package/dist/src/unstable/agent-capabilities/data/agents/iflow-cli.js +41 -5
- package/dist/src/unstable/agent-capabilities/data/agents/junie.d.ts +130 -42
- package/dist/src/unstable/agent-capabilities/data/agents/junie.js +121 -39
- package/dist/src/unstable/agent-capabilities/data/agents/kilo.d.ts +187 -65
- package/dist/src/unstable/agent-capabilities/data/agents/kilo.js +169 -62
- package/dist/src/unstable/agent-capabilities/data/agents/kimi-cli.d.ts +147 -60
- package/dist/src/unstable/agent-capabilities/data/agents/kimi-cli.js +134 -53
- package/dist/src/unstable/agent-capabilities/data/agents/kiro-cli.d.ts +138 -50
- package/dist/src/unstable/agent-capabilities/data/agents/kiro-cli.js +121 -39
- package/dist/src/unstable/agent-capabilities/data/agents/kode.d.ts +45 -5
- package/dist/src/unstable/agent-capabilities/data/agents/kode.js +39 -5
- package/dist/src/unstable/agent-capabilities/data/agents/lingma.d.ts +19 -2
- package/dist/src/unstable/agent-capabilities/data/agents/lingma.js +17 -2
- package/dist/src/unstable/agent-capabilities/data/agents/mcpjam.d.ts +16 -1
- package/dist/src/unstable/agent-capabilities/data/agents/mcpjam.js +14 -1
- package/dist/src/unstable/agent-capabilities/data/agents/mistral-vibe.d.ts +93 -8
- package/dist/src/unstable/agent-capabilities/data/agents/mistral-vibe.js +87 -8
- package/dist/src/unstable/agent-capabilities/data/agents/mux.d.ts +46 -4
- package/dist/src/unstable/agent-capabilities/data/agents/mux.js +40 -4
- package/dist/src/unstable/agent-capabilities/data/agents/neovate.d.ts +111 -59
- package/dist/src/unstable/agent-capabilities/data/agents/neovate.js +97 -50
- package/dist/src/unstable/agent-capabilities/data/agents/ona.d.ts +41 -4
- package/dist/src/unstable/agent-capabilities/data/agents/ona.js +37 -4
- package/dist/src/unstable/agent-capabilities/data/agents/openclaw.d.ts +14 -1
- package/dist/src/unstable/agent-capabilities/data/agents/openclaw.js +12 -1
- package/dist/src/unstable/agent-capabilities/data/agents/opencode.d.ts +338 -20
- package/dist/src/unstable/agent-capabilities/data/agents/opencode.js +289 -22
- package/dist/src/unstable/agent-capabilities/data/agents/openhands.d.ts +53 -4
- package/dist/src/unstable/agent-capabilities/data/agents/openhands.js +49 -4
- package/dist/src/unstable/agent-capabilities/data/agents/pi.d.ts +69 -2
- package/dist/src/unstable/agent-capabilities/data/agents/pi.js +56 -2
- package/dist/src/unstable/agent-capabilities/data/agents/pochi.d.ts +96 -44
- package/dist/src/unstable/agent-capabilities/data/agents/pochi.js +81 -33
- package/dist/src/unstable/agent-capabilities/data/agents/qoder-cn.d.ts +70 -6
- package/dist/src/unstable/agent-capabilities/data/agents/qoder-cn.js +75 -7
- package/dist/src/unstable/agent-capabilities/data/agents/qoder.d.ts +201 -77
- package/dist/src/unstable/agent-capabilities/data/agents/qoder.js +186 -75
- package/dist/src/unstable/agent-capabilities/data/agents/qwen-code.d.ts +169 -57
- package/dist/src/unstable/agent-capabilities/data/agents/qwen-code.js +154 -56
- package/dist/src/unstable/agent-capabilities/data/agents/replit.d.ts +16 -1
- package/dist/src/unstable/agent-capabilities/data/agents/replit.js +14 -1
- package/dist/src/unstable/agent-capabilities/data/agents/roo.d.ts +60 -7
- package/dist/src/unstable/agent-capabilities/data/agents/roo.js +51 -7
- package/dist/src/unstable/agent-capabilities/data/agents/rovodev.d.ts +70 -6
- package/dist/src/unstable/agent-capabilities/data/agents/rovodev.js +64 -6
- package/dist/src/unstable/agent-capabilities/data/agents/tabnine-cli.d.ts +92 -7
- package/dist/src/unstable/agent-capabilities/data/agents/tabnine-cli.js +85 -7
- package/dist/src/unstable/agent-capabilities/data/agents/trae-cn.d.ts +72 -33
- package/dist/src/unstable/agent-capabilities/data/agents/trae-cn.js +64 -29
- package/dist/src/unstable/agent-capabilities/data/agents/trae.d.ts +72 -33
- package/dist/src/unstable/agent-capabilities/data/agents/trae.js +64 -29
- package/dist/src/unstable/agent-capabilities/data/agents/warp.d.ts +31 -3
- package/dist/src/unstable/agent-capabilities/data/agents/warp.js +27 -3
- package/dist/src/unstable/agent-capabilities/data/agents/windsurf.d.ts +126 -41
- package/dist/src/unstable/agent-capabilities/data/agents/windsurf.js +110 -39
- package/dist/src/unstable/agent-capabilities/data/agents/zed.d.ts +31 -3
- package/dist/src/unstable/agent-capabilities/data/agents/zed.js +27 -3
- package/dist/src/unstable/agent-capabilities/data/agents/zencoder.d.ts +41 -5
- package/dist/src/unstable/agent-capabilities/data/agents/zencoder.js +37 -5
- package/dist/src/unstable/agent-capabilities/data/agents/zenflow.d.ts +34 -2
- package/dist/src/unstable/agent-capabilities/data/agents/zenflow.js +31 -4
- package/dist/src/unstable/agent-capabilities/derive.js +36 -57
- package/dist/src/unstable/agent-capabilities/index.d.ts +1 -1
- package/dist/src/unstable/agent-capabilities/index.js +1 -1
- package/dist/src/unstable/agent-capabilities/schema.d.ts +775 -767
- package/dist/src/unstable/agent-capabilities/schema.js +192 -103
- package/dist/src/unstable/agents/registry.d.ts +1 -1
- package/dist/src/unstable/agents/registry.js +1 -13
- package/dist/src/unstable/agents/types.d.ts +16 -48
- package/dist/src/unstable/agents/types.js +2 -2
- package/dist/src/unstable/extensions/common.d.ts +1 -2
- package/dist/src/unstable/extensions/common.js +1 -2
- package/dist/src/unstable/sources/printer.js +7 -1
- package/package.json +3 -3
|
@@ -39,7 +39,6 @@
|
|
|
39
39
|
*
|
|
40
40
|
* @experimental This API is unstable and may change without notice.
|
|
41
41
|
*/
|
|
42
|
-
import * as Effect from "effect/Effect";
|
|
43
42
|
import * as Schema from "effect/Schema";
|
|
44
43
|
import { DocLinkSchema, LeafExtensionTypeSchema, UrlSchema, } from "../extension-types/schema.js";
|
|
45
44
|
import {} from "../extensions/common.js";
|
|
@@ -76,31 +75,62 @@ export const ConventionSchema = Schema.Literals(["universal", "vendor", "hosted"
|
|
|
76
75
|
examples: ["universal", "vendor", "hosted"],
|
|
77
76
|
});
|
|
78
77
|
/** @experimental This API is unstable and may change without notice. */
|
|
79
|
-
export const SkillReadPathStatusSchema = Schema.Literals([
|
|
80
|
-
"canonical",
|
|
81
|
-
"compat",
|
|
82
|
-
"deprecated",
|
|
83
|
-
]).annotate({
|
|
84
|
-
identifier: "SkillReadPathStatus",
|
|
85
|
-
title: "Skill Read Path Status",
|
|
86
|
-
description: "How an additional native Skill directory relates to the agent's primary path.",
|
|
87
|
-
});
|
|
88
|
-
/** @experimental This API is unstable and may change without notice. */
|
|
89
|
-
export const SkillReadPathSchema = Schema.Struct({
|
|
90
|
-
path: Schema.NonEmptyString,
|
|
91
|
-
status: SkillReadPathStatusSchema,
|
|
92
|
-
}).annotate({
|
|
93
|
-
identifier: "SkillReadPath",
|
|
94
|
-
title: "Skill Read Path",
|
|
95
|
-
description: "An additional directory an agent reads for Skill discovery but AXM never writes.",
|
|
96
|
-
});
|
|
97
|
-
/** @experimental This API is unstable and may change without notice. */
|
|
98
78
|
export const ScopeSchema = Schema.Literals(["user", "project"]).annotate({
|
|
99
79
|
identifier: "Scope",
|
|
100
80
|
title: "Scope",
|
|
101
81
|
description: "Where a capability can be configured.",
|
|
102
82
|
examples: ["user", "project"],
|
|
103
83
|
});
|
|
84
|
+
/** A declared reader path; physical resolution and ownership belong to the workspace. */
|
|
85
|
+
const NativeReadLocationFields = {
|
|
86
|
+
scope: ScopeSchema,
|
|
87
|
+
root: Schema.Literals(["project", "home", "xdg-config"]),
|
|
88
|
+
path: Schema.NonEmptyString,
|
|
89
|
+
configRootRelativePath: Schema.optionalKey(Schema.NonEmptyString),
|
|
90
|
+
shape: Schema.Literals(["directory", "file"]),
|
|
91
|
+
role: Schema.Literals(["primary", "additional"]),
|
|
92
|
+
status: Schema.Literals(["canonical", "compat", "deprecated"]),
|
|
93
|
+
applicability: Schema.Union([
|
|
94
|
+
Schema.Struct({ kind: Schema.Literal("always") }),
|
|
95
|
+
Schema.Struct({ kind: Schema.Literal("conditional"), condition: Schema.NonEmptyString }),
|
|
96
|
+
]),
|
|
97
|
+
provenance: Schema.Union([
|
|
98
|
+
Schema.Struct({ kind: Schema.Literal("capability-sources") }),
|
|
99
|
+
Schema.Struct({ kind: Schema.Literal("sources"), sources: Schema.NonEmptyArray(UrlSchema) }),
|
|
100
|
+
]),
|
|
101
|
+
};
|
|
102
|
+
const nativeReadLocationCheck = Schema.makeFilter((location) => {
|
|
103
|
+
if (location.configRootRelativePath !== undefined &&
|
|
104
|
+
(location.scope !== "user" ||
|
|
105
|
+
/^(?:[\\/~]|[A-Za-z]:)/.test(location.configRootRelativePath) ||
|
|
106
|
+
location.configRootRelativePath.split(/[\\/]/).includes(".."))) {
|
|
107
|
+
return {
|
|
108
|
+
path: ["configRootRelativePath"],
|
|
109
|
+
issue: "Configuration-root overrides require a bounded relative path in user scope.",
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
if ((location.scope === "project") !== (location.root === "project")) {
|
|
113
|
+
return {
|
|
114
|
+
path: ["root"],
|
|
115
|
+
issue: "Project locations require the project root; user locations require home or xdg-config.",
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (/^(?:[\\/~]|[A-Za-z]:)/.test(location.path) ||
|
|
119
|
+
location.path.split(/[\\/]/).includes("..")) {
|
|
120
|
+
return {
|
|
121
|
+
path: ["path"],
|
|
122
|
+
issue: "Native locations must be relative to their declared root without parent traversal.",
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return undefined;
|
|
126
|
+
});
|
|
127
|
+
export const NativeReadLocationSchema = Schema.Struct(NativeReadLocationFields)
|
|
128
|
+
.check(nativeReadLocationCheck)
|
|
129
|
+
.annotate({
|
|
130
|
+
identifier: "NativeReadLocation",
|
|
131
|
+
title: "Native Reader Location",
|
|
132
|
+
description: "A documented native reader path with explicit scope, root, shape, conditions, and evidence; it grants no writer ownership.",
|
|
133
|
+
});
|
|
104
134
|
const NonEmptyScopesSchema = Schema.NonEmptyArray(ScopeSchema).pipe(Schema.check(Schema.isUnique()));
|
|
105
135
|
/** @experimental This API is unstable and may change without notice. */
|
|
106
136
|
export const SUPPORTED_AXM_SUPPORT = "supported";
|
|
@@ -402,8 +432,7 @@ export const SkillsExtensionCapabilitySchema = Schema.Struct({
|
|
|
402
432
|
Schema.Struct({
|
|
403
433
|
...AvailableSpecTrackedNativeCapabilityFields,
|
|
404
434
|
convention: Schema.Literals(["universal", "vendor"]),
|
|
405
|
-
|
|
406
|
-
additionalReadPaths: Schema.Array(SkillReadPathSchema).pipe(Schema.withDecodingDefaultKey(Effect.succeed([])), Schema.optionalKey),
|
|
435
|
+
locations: Schema.Array(NativeReadLocationSchema),
|
|
407
436
|
}),
|
|
408
437
|
Schema.Struct({
|
|
409
438
|
...AvailableSpecTrackedNativeCapabilityFields,
|
|
@@ -419,14 +448,6 @@ export const SkillsExtensionCapabilitySchema = Schema.Struct({
|
|
|
419
448
|
title: "Skills Capability",
|
|
420
449
|
description: "Agent support for Agent Skills-style extensions.",
|
|
421
450
|
});
|
|
422
|
-
/** @experimental This API is unstable and may change without notice. */
|
|
423
|
-
/** @experimental This API is unstable and may change without notice. */
|
|
424
|
-
export const SubagentsLayoutSchema = Schema.Literals(["file", "directory"]).annotate({
|
|
425
|
-
identifier: "SubagentsLayout",
|
|
426
|
-
title: "Subagents Layout",
|
|
427
|
-
description: "Whether subagents live in a directory or a single opaque file path.",
|
|
428
|
-
examples: ["directory", "file"],
|
|
429
|
-
});
|
|
430
451
|
const PluginSubagentsNativeCapabilitySchema = Schema.Struct({
|
|
431
452
|
...AvailableNativeCapabilityBaseFields,
|
|
432
453
|
availability: PluginAvailabilitySchema,
|
|
@@ -437,8 +458,7 @@ export const SubagentsExtensionCapabilitySchema = Schema.Struct({
|
|
|
437
458
|
Schema.Struct({
|
|
438
459
|
...AvailableNativeCapabilityBaseFields,
|
|
439
460
|
availability: NativeAvailabilitySchema,
|
|
440
|
-
|
|
441
|
-
layout: SubagentsLayoutSchema,
|
|
461
|
+
locations: Schema.Array(NativeReadLocationSchema),
|
|
442
462
|
}),
|
|
443
463
|
PluginSubagentsNativeCapabilitySchema,
|
|
444
464
|
Schema.Struct(UnavailableNativeCapabilityFields),
|
|
@@ -469,39 +489,22 @@ export const RuleInstructionsImportSyntaxSchema = Schema.Literals(["at-path"]).a
|
|
|
469
489
|
description: "Syntax an agent uses to import another instruction file.",
|
|
470
490
|
examples: ["at-path"],
|
|
471
491
|
});
|
|
472
|
-
const
|
|
473
|
-
directory: Schema.optionalKey(Schema.NonEmptyString),
|
|
474
|
-
};
|
|
475
|
-
const AgentsMdRulesExtensionCapabilitySchema = Schema.Struct({
|
|
476
|
-
...AvailableSpecTrackedNativeCapabilityFields,
|
|
477
|
-
...OptionalRuleDirectoryField,
|
|
478
|
-
kind: Schema.Literal("agents-md"),
|
|
479
|
-
files: Schema.Tuple([Schema.Literal("AGENTS.md")]),
|
|
480
|
-
nestedDiscovery: Schema.Boolean,
|
|
481
|
-
importSyntax: Schema.NullOr(RuleInstructionsImportSyntaxSchema),
|
|
482
|
-
});
|
|
483
|
-
const OwnFileRulesExtensionCapabilitySchema = Schema.Struct({
|
|
492
|
+
const AvailableRulesExtensionCapabilitySchema = Schema.Struct({
|
|
484
493
|
...AvailableSpecTrackedNativeCapabilityFields,
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
files: Schema.Tuple([Schema.NonEmptyString]),
|
|
494
|
+
kind: RuleInstructionsKindSchema,
|
|
495
|
+
locations: Schema.Array(NativeReadLocationSchema),
|
|
488
496
|
nestedDiscovery: Schema.Boolean,
|
|
489
497
|
importSyntax: Schema.NullOr(RuleInstructionsImportSyntaxSchema),
|
|
490
|
-
})
|
|
491
|
-
const
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
importSyntax: Schema.NullOr(RuleInstructionsImportSyntaxSchema),
|
|
497
|
-
directory: Schema.NonEmptyString,
|
|
498
|
-
});
|
|
498
|
+
}).check(Schema.makeFilter((capability) => {
|
|
499
|
+
const shape = capability.kind === "rules-dir" ? "directory" : "file";
|
|
500
|
+
return capability.locations.some((location) => location.role === "primary" && location.shape !== shape)
|
|
501
|
+
? { path: ["locations"], issue: `Primary instruction locations must have ${shape} shape` }
|
|
502
|
+
: undefined;
|
|
503
|
+
}));
|
|
499
504
|
/** @experimental This API is unstable and may change without notice. */
|
|
500
505
|
export const RulesExtensionCapabilitySchema = Schema.Struct({
|
|
501
506
|
native: Schema.Union([
|
|
502
|
-
|
|
503
|
-
OwnFileRulesExtensionCapabilitySchema,
|
|
504
|
-
RulesDirRulesExtensionCapabilitySchema,
|
|
507
|
+
AvailableRulesExtensionCapabilitySchema,
|
|
505
508
|
Schema.Struct(UnavailableNativeCapabilityFields),
|
|
506
509
|
]),
|
|
507
510
|
axm: NoWriterAxmCapabilityStateSchema,
|
|
@@ -526,18 +529,43 @@ export const ConfigFileFormatSchema = Schema.Literals([
|
|
|
526
529
|
description: "Serialization format used by an agent's permission config file.",
|
|
527
530
|
examples: ["json", "toml", "yaml", "vscode-settings"],
|
|
528
531
|
});
|
|
532
|
+
/** One declared native configuration reader, independently of any AXM writer. */
|
|
533
|
+
export const NativeConfigReadLocationSchema = Schema.Struct({
|
|
534
|
+
...NativeReadLocationFields,
|
|
535
|
+
shape: Schema.Literal("file"),
|
|
536
|
+
id: Schema.NonEmptyString,
|
|
537
|
+
format: ConfigFileFormatSchema,
|
|
538
|
+
keyPath: Schema.optionalKey(Schema.NonEmptyArray(Schema.NonEmptyString)),
|
|
539
|
+
attribution: Schema.optionalKey(Schema.Literals(["shared", "agent"])),
|
|
540
|
+
gitignored: Schema.optionalKey(Schema.Boolean),
|
|
541
|
+
})
|
|
542
|
+
.check(nativeReadLocationCheck)
|
|
543
|
+
.annotate({
|
|
544
|
+
identifier: "NativeConfigReadLocation",
|
|
545
|
+
title: "Native Configuration Reader Location",
|
|
546
|
+
description: "A scoped native file with its syntax, static container path, and source evidence. Writers refer to its id; no writer support or ownership is implied.",
|
|
547
|
+
});
|
|
548
|
+
const nativeConfigReferenceIssues = (locations, references, writerPath) => {
|
|
549
|
+
const issues = [];
|
|
550
|
+
const ids = new Set(locations.map((location) => location.id));
|
|
551
|
+
if (ids.size !== locations.length)
|
|
552
|
+
issues.push({
|
|
553
|
+
path: ["native", "locations"],
|
|
554
|
+
issue: "Native config location ids must be unique within a capability.",
|
|
555
|
+
});
|
|
556
|
+
if (references.some((id) => !ids.has(id)))
|
|
557
|
+
issues.push({
|
|
558
|
+
path: [...writerPath],
|
|
559
|
+
issue: "AXM writers must reference declared native config location ids.",
|
|
560
|
+
});
|
|
561
|
+
return issues;
|
|
562
|
+
};
|
|
529
563
|
/** @experimental This API is unstable and may change without notice. */
|
|
530
|
-
export const
|
|
531
|
-
"
|
|
532
|
-
"
|
|
533
|
-
"
|
|
534
|
-
"
|
|
535
|
-
"context_servers",
|
|
536
|
-
]).annotate({
|
|
537
|
-
identifier: "McpServersKey",
|
|
538
|
-
title: "MCP Servers Key",
|
|
539
|
-
description: "Top-level key containing MCP server entries in an agent config file.",
|
|
540
|
-
examples: ["mcpServers", "servers", "mcp"],
|
|
564
|
+
export const McpServersPathSchema = Schema.NonEmptyArray(Schema.NonEmptyString).annotate({
|
|
565
|
+
identifier: "McpServersPath",
|
|
566
|
+
title: "MCP Servers Path",
|
|
567
|
+
description: "Object key path containing MCP server entries in a native config file.",
|
|
568
|
+
examples: [["mcpServers"], ["mcp", "servers"]],
|
|
541
569
|
});
|
|
542
570
|
/** @experimental This API is unstable and may change without notice. */
|
|
543
571
|
export const McpTargetAttributionSchema = Schema.Literals(["shared", "agent"]).annotate({
|
|
@@ -547,6 +575,8 @@ export const McpTargetAttributionSchema = Schema.Literals(["shared", "agent"]).a
|
|
|
547
575
|
});
|
|
548
576
|
/** @experimental This API is unstable and may change without notice. */
|
|
549
577
|
export const McpConfigTargetSchema = Schema.Struct({
|
|
578
|
+
/** Explicit captured native root for a resolved runtime destination. */
|
|
579
|
+
nativeRoot: Schema.optionalKey(Schema.NonEmptyString),
|
|
550
580
|
scope: ScopeSchema,
|
|
551
581
|
path: Schema.NonEmptyString,
|
|
552
582
|
format: ConfigFileFormatSchema,
|
|
@@ -625,6 +655,9 @@ export const McpUrlKeyMapSchema = Schema.Struct({
|
|
|
625
655
|
});
|
|
626
656
|
/** @experimental This API is unstable and may change without notice. */
|
|
627
657
|
export const McpRemoteDialectSchema = Schema.Struct({
|
|
658
|
+
implicitTransport: Schema.optionalKey(Schema.Literal("http-or-sse")).annotate({
|
|
659
|
+
description: "A documented URL-only remote entry selects HTTP or SSE through the endpoint, without an explicit transport discriminator.",
|
|
660
|
+
}),
|
|
628
661
|
typeField: McpTypeFieldSchema,
|
|
629
662
|
urlKey: McpUrlKeyMapSchema,
|
|
630
663
|
headersKey: Schema.NullOr(Schema.NonEmptyString),
|
|
@@ -636,20 +669,26 @@ export const McpRemoteDialectSchema = Schema.Struct({
|
|
|
636
669
|
description: "How an agent represents remote MCP server entries.",
|
|
637
670
|
});
|
|
638
671
|
/** @experimental This API is unstable and may change without notice. */
|
|
639
|
-
export const
|
|
640
|
-
serversKey: McpServersKeySchema,
|
|
672
|
+
export const McpEntryDialectSchema = Schema.Struct({
|
|
641
673
|
activationField: McpActivationFieldSchema,
|
|
642
|
-
targets: Schema.Array(McpConfigTargetSchema),
|
|
643
674
|
stdio: Schema.NullOr(McpStdioDialectSchema),
|
|
644
675
|
remote: Schema.NullOr(McpRemoteDialectSchema),
|
|
676
|
+
}).annotate({
|
|
677
|
+
identifier: "McpEntryDialect",
|
|
678
|
+
title: "Native MCP Entry Dialect",
|
|
679
|
+
description: "Verified native entry grammar, independent of AXM writer support.",
|
|
680
|
+
});
|
|
681
|
+
/** @experimental This API is unstable and may change without notice. */
|
|
682
|
+
export const McpConfigSchema = Schema.Struct({
|
|
683
|
+
locationIds: Schema.NonEmptyArray(Schema.NonEmptyString).check(Schema.isUnique()),
|
|
645
684
|
}).annotate({
|
|
646
685
|
identifier: "McpConfig",
|
|
647
|
-
title: "MCP
|
|
648
|
-
description: "
|
|
686
|
+
title: "MCP Writer Locations",
|
|
687
|
+
description: "Native configuration locations selected by the AXM writer.",
|
|
649
688
|
});
|
|
650
689
|
/** @experimental This API is unstable and may change without notice. */
|
|
651
690
|
export const McpEnvExpansionSchema = Schema.Struct({
|
|
652
|
-
variables: Schema.Literals(["none", "braced"]),
|
|
691
|
+
variables: Schema.Literals(["none", "braced", "env-tag"]),
|
|
653
692
|
defaults: Schema.Boolean,
|
|
654
693
|
}).annotate({
|
|
655
694
|
identifier: "McpEnvExpansion",
|
|
@@ -663,6 +702,8 @@ const McpUnavailableCapabilityStruct = Schema.Struct({
|
|
|
663
702
|
const McpNativeWithTransportsSchema = Schema.Struct({
|
|
664
703
|
...AvailableSpecTrackedNativeCapabilityFields,
|
|
665
704
|
transports: NonEmptyMcpTransportsSchema,
|
|
705
|
+
entryDialect: Schema.NullOr(McpEntryDialectSchema),
|
|
706
|
+
locations: Schema.Array(NativeConfigReadLocationSchema),
|
|
666
707
|
mcpEnvExpansion: Schema.optionalKey(McpEnvExpansionSchema),
|
|
667
708
|
});
|
|
668
709
|
const McpAvailableCapabilityStruct = Schema.Struct({
|
|
@@ -679,12 +720,39 @@ const McpExtensionCapabilitySchemaWithChecks = McpExtensionCapabilityStruct.pipe
|
|
|
679
720
|
if (activeSourcesIssue !== undefined)
|
|
680
721
|
issues.push(activeSourcesIssue);
|
|
681
722
|
const writer = capability.axm.writer;
|
|
723
|
+
if ("locations" in capability.native) {
|
|
724
|
+
issues.push(...nativeConfigReferenceIssues(capability.native.locations, writer?.config.locationIds ?? [], ["axm", "writer", "config", "locationIds"]));
|
|
725
|
+
if (capability.native.locations.some((location) => location.keyPath === undefined))
|
|
726
|
+
issues.push({
|
|
727
|
+
path: ["native", "locations"],
|
|
728
|
+
issue: "MCP reader locations require an explicit servers-container keyPath.",
|
|
729
|
+
});
|
|
730
|
+
if (capability.native.locations.some((location) => location.attribution === undefined))
|
|
731
|
+
issues.push({
|
|
732
|
+
path: ["native", "locations"],
|
|
733
|
+
issue: "MCP reader locations require explicit attribution.",
|
|
734
|
+
});
|
|
735
|
+
const selected = new Set(writer?.config.locationIds ?? []);
|
|
736
|
+
if (capability.native.locations.some((location) => selected.has(location.id) && !Schema.is(McpServersPathSchema)(location.keyPath))) {
|
|
737
|
+
issues.push({
|
|
738
|
+
path: ["native", "locations"],
|
|
739
|
+
issue: "Writable MCP locations require a nonempty servers-container key path.",
|
|
740
|
+
});
|
|
741
|
+
}
|
|
742
|
+
}
|
|
682
743
|
if (writer === null || !("transports" in capability.native))
|
|
683
744
|
return issues;
|
|
684
|
-
const config =
|
|
745
|
+
const config = capability.native.entryDialect;
|
|
746
|
+
if (config === null) {
|
|
747
|
+
issues.push({
|
|
748
|
+
path: ["native", "entryDialect"],
|
|
749
|
+
issue: "An MCP writer requires a verified native entry dialect.",
|
|
750
|
+
});
|
|
751
|
+
return issues;
|
|
752
|
+
}
|
|
685
753
|
if (capability.native.transports.includes("stdio") && config.stdio === null) {
|
|
686
754
|
issues.push({
|
|
687
|
-
path: ["
|
|
755
|
+
path: ["native", "entryDialect", "stdio"],
|
|
688
756
|
issue: "MCP stdio config is required when stdio transport is supported.",
|
|
689
757
|
});
|
|
690
758
|
}
|
|
@@ -692,7 +760,7 @@ const McpExtensionCapabilitySchemaWithChecks = McpExtensionCapabilityStruct.pipe
|
|
|
692
760
|
capability.native.transports.includes("sse")) &&
|
|
693
761
|
config.remote === null) {
|
|
694
762
|
issues.push({
|
|
695
|
-
path: ["
|
|
763
|
+
path: ["native", "entryDialect", "remote"],
|
|
696
764
|
issue: "MCP remote config is required when http or sse transport is supported.",
|
|
697
765
|
});
|
|
698
766
|
}
|
|
@@ -730,17 +798,6 @@ export const PermissionGrammarStyleSchema = Schema.Literals([
|
|
|
730
798
|
examples: ["tool-call", "prefix", "regex"],
|
|
731
799
|
});
|
|
732
800
|
/** @experimental This API is unstable and may change without notice. */
|
|
733
|
-
export const ConfigFileLocationSchema = Schema.Struct({
|
|
734
|
-
scope: ScopeSchema,
|
|
735
|
-
path: Schema.NonEmptyString,
|
|
736
|
-
format: ConfigFileFormatSchema,
|
|
737
|
-
gitignored: Schema.Boolean,
|
|
738
|
-
}).annotate({
|
|
739
|
-
identifier: "ConfigFileLocation",
|
|
740
|
-
title: "Config File Location",
|
|
741
|
-
description: "A configuration file where an agent's permission rules can live.",
|
|
742
|
-
});
|
|
743
|
-
/** @experimental This API is unstable and may change without notice. */
|
|
744
801
|
export const CANONICAL_HOOK_EVENT_IDS = [
|
|
745
802
|
"session.start",
|
|
746
803
|
"prompt.submit",
|
|
@@ -919,30 +976,39 @@ export const HookCommandNameSerializationSchema = Schema.Literals(["omit", "mani
|
|
|
919
976
|
examples: ["omit", "manifest"],
|
|
920
977
|
});
|
|
921
978
|
/** @experimental This API is unstable and may change without notice. */
|
|
922
|
-
export const
|
|
979
|
+
export const HookEntryDialectSchema = Schema.Struct({
|
|
923
980
|
serializer: HooksSerializerSchema,
|
|
924
|
-
configFiles: Schema.NonEmptyArray(ConfigFileLocationSchema),
|
|
925
|
-
settingsKey: Schema.NonEmptyString,
|
|
926
|
-
eventMap: Schema.Literal("native.events"),
|
|
927
981
|
matcherKind: HookMatcherKindSchema,
|
|
928
982
|
matcherSerialization: HookMatcherSerializationSchema,
|
|
929
983
|
timeoutSerialization: HookTimeoutSerializationSchema,
|
|
930
984
|
commandNameSerialization: HookCommandNameSerializationSchema,
|
|
985
|
+
}).annotate({
|
|
986
|
+
identifier: "HookEntryDialect",
|
|
987
|
+
title: "Native Hook Entry Dialect",
|
|
988
|
+
description: "Verified native Hook entry grammar, independent of AXM writer support.",
|
|
989
|
+
});
|
|
990
|
+
/** @experimental This API is unstable and may change without notice. */
|
|
991
|
+
export const HooksWriterSchema = Schema.Struct({
|
|
992
|
+
locationIds: Schema.NonEmptyArray(Schema.NonEmptyString).check(Schema.isUnique()),
|
|
993
|
+
eventMap: Schema.Literal("native.events"),
|
|
931
994
|
}).annotate({
|
|
932
995
|
identifier: "HooksWriter",
|
|
933
996
|
title: "Hooks Writer",
|
|
934
|
-
description: "
|
|
997
|
+
description: "Native Hook locations and event mappings selected by the AXM writer.",
|
|
935
998
|
});
|
|
936
999
|
const HooksAvailableNativeCapabilitySchema = Schema.Struct({
|
|
937
1000
|
...AvailableNativeCapabilityBaseFields,
|
|
938
1001
|
mechanism: NonEmptyHookMechanismFamiliesSchema,
|
|
939
|
-
|
|
1002
|
+
entryDialect: Schema.NullOr(HookEntryDialectSchema),
|
|
1003
|
+
locations: Schema.Array(NativeConfigReadLocationSchema),
|
|
940
1004
|
events: Schema.NonEmptyArray(HookEventMappingSchema),
|
|
941
1005
|
tools: Schema.Array(HookToolMappingSchema),
|
|
942
1006
|
});
|
|
943
1007
|
const HooksUnmodeledNativeCapabilitySchema = Schema.Struct({
|
|
944
1008
|
...AvailableNativeCapabilityBaseFields,
|
|
945
1009
|
modeling: Schema.Literal("native-unmodeled"),
|
|
1010
|
+
entryDialect: Schema.NullOr(HookEntryDialectSchema),
|
|
1011
|
+
locations: Schema.Array(NativeConfigReadLocationSchema),
|
|
946
1012
|
});
|
|
947
1013
|
const HooksExtensionCapabilityStruct = Schema.Struct({
|
|
948
1014
|
native: Schema.Union([
|
|
@@ -955,6 +1021,22 @@ const HooksExtensionCapabilityStruct = Schema.Struct({
|
|
|
955
1021
|
/** @experimental This API is unstable and may change without notice. */
|
|
956
1022
|
export const HooksExtensionCapabilitySchema = HooksExtensionCapabilityStruct.pipe(Schema.check(Schema.makeFilter((capability) => {
|
|
957
1023
|
const issues = [];
|
|
1024
|
+
if ("locations" in capability.native) {
|
|
1025
|
+
issues.push(...nativeConfigReferenceIssues(capability.native.locations, capability.axm.writer?.locationIds ?? [], ["axm", "writer", "locationIds"]));
|
|
1026
|
+
const selected = new Set(capability.axm.writer?.locationIds ?? []);
|
|
1027
|
+
if (capability.native.locations.some((location) => selected.has(location.id) && location.keyPath === undefined))
|
|
1028
|
+
issues.push({
|
|
1029
|
+
path: ["native", "locations"],
|
|
1030
|
+
issue: "Writable Hook reader locations require a static keyPath.",
|
|
1031
|
+
});
|
|
1032
|
+
}
|
|
1033
|
+
if (capability.axm.writer !== null &&
|
|
1034
|
+
(!("entryDialect" in capability.native) || capability.native.entryDialect === null)) {
|
|
1035
|
+
issues.push({
|
|
1036
|
+
path: ["native", "entryDialect"],
|
|
1037
|
+
issue: "A Hook writer requires a verified native entry dialect.",
|
|
1038
|
+
});
|
|
1039
|
+
}
|
|
958
1040
|
if (capability.axm.writer !== null && capability.native.sources.length === 0) {
|
|
959
1041
|
issues.push({
|
|
960
1042
|
path: ["native", "sources"],
|
|
@@ -1007,7 +1089,11 @@ export const PermissionCliFlagSchema = Schema.Struct({
|
|
|
1007
1089
|
description: "Invocation-time flag that adjusts approval or sandbox behavior.",
|
|
1008
1090
|
});
|
|
1009
1091
|
const PermissionGrantStruct = Schema.Struct({
|
|
1010
|
-
|
|
1092
|
+
destination: Schema.Union([
|
|
1093
|
+
Schema.Struct({ kind: Schema.Literal("location"), locationId: Schema.NonEmptyString }),
|
|
1094
|
+
Schema.Struct({ kind: Schema.Literal("invocation") }),
|
|
1095
|
+
Schema.Struct({ kind: Schema.Literal("settings-ui") }),
|
|
1096
|
+
]),
|
|
1011
1097
|
patch: Schema.NullOr(Schema.Unknown),
|
|
1012
1098
|
template: Schema.NullOr(Schema.NonEmptyString),
|
|
1013
1099
|
});
|
|
@@ -1025,7 +1111,7 @@ export const PermissionsExtensionCapabilitySchema = Schema.Struct({
|
|
|
1025
1111
|
Schema.Struct({
|
|
1026
1112
|
...AvailableNativeCapabilityBaseFields,
|
|
1027
1113
|
mechanism: NonEmptyPermissionMechanismsSchema,
|
|
1028
|
-
|
|
1114
|
+
locations: Schema.Array(NativeConfigReadLocationSchema),
|
|
1029
1115
|
grammar: Schema.NullOr(PermissionGrammarSchema),
|
|
1030
1116
|
prerequisites: Schema.Array(PermissionPrerequisiteSchema),
|
|
1031
1117
|
cliFlags: Schema.Array(PermissionCliFlagSchema),
|
|
@@ -1034,7 +1120,9 @@ export const PermissionsExtensionCapabilitySchema = Schema.Struct({
|
|
|
1034
1120
|
]),
|
|
1035
1121
|
axm: axmCapabilityStateSchema(Schema.Struct({ grants: Schema.Record(Schema.String, PermissionGrantSchema) }), "PermissionsAxmState"),
|
|
1036
1122
|
})
|
|
1037
|
-
.pipe(Schema.check(Schema.makeFilter(requireSourcesForActiveAxmSupport)))
|
|
1123
|
+
.pipe(Schema.check(Schema.makeFilter(requireSourcesForActiveAxmSupport)), Schema.check(Schema.makeFilter((capability) => "locations" in capability.native
|
|
1124
|
+
? nativeConfigReferenceIssues(capability.native.locations, Object.values(capability.axm.writer?.grants ?? {}).flatMap((grant) => grant.destination.kind === "location" ? [grant.destination.locationId] : []), ["axm", "writer", "grants"])
|
|
1125
|
+
: undefined)))
|
|
1038
1126
|
.annotate({
|
|
1039
1127
|
identifier: "PermissionsExtensionCapability",
|
|
1040
1128
|
title: "Permissions Capability",
|
|
@@ -1159,9 +1247,11 @@ export const AgentSchema = AgentStruct.pipe(Schema.check(Schema.makeFilter((agen
|
|
|
1159
1247
|
const issues = [];
|
|
1160
1248
|
if ("kind" in agent.instructions.native &&
|
|
1161
1249
|
agent.instructions.native.kind === "agents-md" &&
|
|
1162
|
-
agent.instructions.native.
|
|
1250
|
+
agent.instructions.native.locations.some((location) => location.scope === "project" &&
|
|
1251
|
+
location.role === "primary" &&
|
|
1252
|
+
(location.shape !== "file" || location.path !== "AGENTS.md"))) {
|
|
1163
1253
|
issues.push({
|
|
1164
|
-
path: ["instructions", "native", "
|
|
1254
|
+
path: ["instructions", "native", "locations"],
|
|
1165
1255
|
issue: 'instructions.kind "agents-md" requires AGENTS.md.',
|
|
1166
1256
|
});
|
|
1167
1257
|
}
|
|
@@ -1198,8 +1288,7 @@ export const AgentSchema = AgentStruct.pipe(Schema.check(Schema.makeFilter((agen
|
|
|
1198
1288
|
});
|
|
1199
1289
|
}
|
|
1200
1290
|
if (hostedOnly &&
|
|
1201
|
-
capabilitySlots.some((capability) => "
|
|
1202
|
-
("configFiles" in capability.native && capability.native.configFiles.length > 0))) {
|
|
1291
|
+
capabilitySlots.some((capability) => "locations" in capability.native && capability.native.locations.length > 0)) {
|
|
1203
1292
|
issues.push({
|
|
1204
1293
|
path: ["capabilities"],
|
|
1205
1294
|
issue: "Hosted-only agents cannot declare local capability paths.",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { AgentRegistry } from "./types.js";
|
|
10
10
|
/**
|
|
11
|
-
* Derived descriptors for all known
|
|
11
|
+
* Derived descriptors for all known configurable coding agents.
|
|
12
12
|
*
|
|
13
13
|
* Keys are agent IDs, values are full descriptor objects.
|
|
14
14
|
* Paths are pre-expanded at module initialization.
|
|
@@ -9,19 +9,8 @@
|
|
|
9
9
|
import * as Record from "effect/Record";
|
|
10
10
|
import { CONFIGURABLE_AGENTS_BY_ID } from "../agent-capabilities/catalog.js";
|
|
11
11
|
import { deriveAgentDescriptor } from "../agent-capabilities/derive.js";
|
|
12
|
-
import { UNIVERSAL_SKILLS_DIR } from "../extensions/universal-skills-dir.js";
|
|
13
|
-
const UNIVERSAL_AGENT_DESCRIPTOR = {
|
|
14
|
-
id: "universal",
|
|
15
|
-
name: "Universal",
|
|
16
|
-
rootDir: undefined,
|
|
17
|
-
skills: {
|
|
18
|
-
dir: UNIVERSAL_SKILLS_DIR,
|
|
19
|
-
additionalReadPaths: [],
|
|
20
|
-
},
|
|
21
|
-
detection: { project: { markers: [] }, user: { markers: [] } },
|
|
22
|
-
};
|
|
23
12
|
/**
|
|
24
|
-
* Derived descriptors for all known
|
|
13
|
+
* Derived descriptors for all known configurable coding agents.
|
|
25
14
|
*
|
|
26
15
|
* Keys are agent IDs, values are full descriptor objects.
|
|
27
16
|
* Paths are pre-expanded at module initialization.
|
|
@@ -30,6 +19,5 @@ const UNIVERSAL_AGENT_DESCRIPTOR = {
|
|
|
30
19
|
*/
|
|
31
20
|
export const AGENT_DESCRIPTORS = {
|
|
32
21
|
...Record.map(CONFIGURABLE_AGENTS_BY_ID, deriveAgentDescriptor),
|
|
33
|
-
universal: UNIVERSAL_AGENT_DESCRIPTOR,
|
|
34
22
|
};
|
|
35
23
|
//# sourceMappingURL=registry.js.map
|
|
@@ -6,17 +6,16 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { Record } from "effect";
|
|
8
8
|
import { CONFIGURABLE_AGENT_IDS, type ConfigurableAgentId } from "../agent-capabilities/identity.js";
|
|
9
|
-
import type { DetectionMarker, Scope, ScopeDetection,
|
|
9
|
+
import type { DetectionMarker, Scope, ScopeDetection, NativeReadLocation } from "../agent-capabilities/schema.js";
|
|
10
10
|
/**
|
|
11
11
|
* Skills-specific configuration for an agent.
|
|
12
12
|
*
|
|
13
13
|
* @experimental This API is unstable and may change without notice.
|
|
14
14
|
*/
|
|
15
15
|
export interface AgentSkillsDescriptor {
|
|
16
|
-
|
|
17
|
-
readonly
|
|
18
|
-
|
|
19
|
-
readonly additionalReadPaths: ReadonlyArray<SkillReadPath>;
|
|
16
|
+
readonly locations: ReadonlyArray<NativeReadLocation>;
|
|
17
|
+
readonly scopes: ReadonlyArray<Scope>;
|
|
18
|
+
readonly writerSupported: boolean;
|
|
20
19
|
}
|
|
21
20
|
/**
|
|
22
21
|
* Subagents-specific configuration for an agent.
|
|
@@ -24,18 +23,9 @@ export interface AgentSkillsDescriptor {
|
|
|
24
23
|
* @experimental This API is unstable and may change without notice.
|
|
25
24
|
*/
|
|
26
25
|
export interface AgentSubagentsDescriptor {
|
|
27
|
-
|
|
28
|
-
readonly dir: string;
|
|
29
|
-
/**
|
|
30
|
-
* Scopes the agent itself supports for subagents. See
|
|
31
|
-
* The scopes the agent itself supports for subagents.
|
|
32
|
-
*/
|
|
26
|
+
readonly locations: ReadonlyArray<NativeReadLocation>;
|
|
33
27
|
readonly scopes: ReadonlyArray<Scope>;
|
|
34
|
-
|
|
35
|
-
* When true, the path is a single file (e.g., ".roomodes") rather than a
|
|
36
|
-
* directory containing subagent files.
|
|
37
|
-
*/
|
|
38
|
-
readonly isFile?: boolean;
|
|
28
|
+
readonly writerSupported: boolean;
|
|
39
29
|
}
|
|
40
30
|
/**
|
|
41
31
|
* Workspace instruction-file convention for one coding agent.
|
|
@@ -48,19 +38,13 @@ export interface AgentSubagentsDescriptor {
|
|
|
48
38
|
*
|
|
49
39
|
* @experimental
|
|
50
40
|
*/
|
|
51
|
-
export
|
|
52
|
-
readonly kind: "agents-md";
|
|
53
|
-
readonly
|
|
54
|
-
|
|
55
|
-
readonly
|
|
56
|
-
readonly file: string;
|
|
41
|
+
export interface AgentInstructionsDescriptor {
|
|
42
|
+
readonly kind: "agents-md" | "own-file" | "rules-dir";
|
|
43
|
+
readonly locations: ReadonlyArray<NativeReadLocation>;
|
|
44
|
+
readonly scopes: ReadonlyArray<Scope>;
|
|
45
|
+
readonly writerSupported: boolean;
|
|
57
46
|
readonly importSyntax?: "at-path";
|
|
58
|
-
|
|
59
|
-
} | {
|
|
60
|
-
readonly kind: "rules-dir";
|
|
61
|
-
readonly dir: string;
|
|
62
|
-
readonly format: "frontmatter";
|
|
63
|
-
};
|
|
47
|
+
}
|
|
64
48
|
/** @experimental This API is unstable and may change without notice. */
|
|
65
49
|
export type AgentDetectionMarker = DetectionMarker;
|
|
66
50
|
/** @experimental This API is unstable and may change without notice. */
|
|
@@ -74,8 +58,8 @@ export interface AgentDetectionDescriptor {
|
|
|
74
58
|
}
|
|
75
59
|
/** @experimental This API is unstable and may change without notice. */
|
|
76
60
|
export { CONFIGURABLE_AGENT_IDS, type ConfigurableAgentId };
|
|
77
|
-
/**
|
|
78
|
-
export declare const MATERIALIZATION_TARGET_IDS: readonly ["adal", "aider-desk", "amp", "antigravity", "antigravity-cli", "augment", "claude-code", "cline", "codearts-agent", "codebuddy", "codemaker", "codestudio", "codex", "command-code", "continue", "cortex", "crush", "cursor", "deepagents", "devin", "dexto", "droid", "firebender", "forgecode", "gemini-cli", "github-copilot-cli", "goose", "grok-cli", "hermes", "ibm-bob", "iflow-cli", "junie", "lingma", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"
|
|
61
|
+
/** Real agents that can participate in native materialization. @experimental */
|
|
62
|
+
export declare const MATERIALIZATION_TARGET_IDS: readonly ["adal", "aider-desk", "amp", "antigravity", "antigravity-cli", "augment", "claude-code", "cline", "codearts-agent", "codebuddy", "codemaker", "codestudio", "codex", "command-code", "continue", "cortex", "crush", "cursor", "deepagents", "devin", "dexto", "droid", "firebender", "forgecode", "gemini-cli", "github-copilot-cli", "goose", "grok-cli", "hermes", "ibm-bob", "iflow-cli", "junie", "lingma", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"];
|
|
79
63
|
/** @experimental This API is unstable and may change without notice. */
|
|
80
64
|
export type MaterializationTargetId = (typeof MATERIALIZATION_TARGET_IDS)[number];
|
|
81
65
|
/**
|
|
@@ -88,25 +72,9 @@ export interface AgentDescriptor {
|
|
|
88
72
|
readonly id: MaterializationTargetId;
|
|
89
73
|
/** Human-readable display name (e.g., "Claude Code") */
|
|
90
74
|
readonly name: string;
|
|
91
|
-
/**
|
|
92
|
-
* Per-agent native configuration root, relative to the workspace root
|
|
93
|
-
* (e.g., `.claude` for Claude Code, `.cursor` for Cursor). The
|
|
94
|
-
* workspace read-model scanners look for this agent's `settings.json`,
|
|
95
|
-
* `mcp.json`, and other native config files inside this directory.
|
|
96
|
-
*
|
|
97
|
-
* Three states (with `exactOptionalPropertyTypes: true`):
|
|
98
|
-
*
|
|
99
|
-
* - `string` — use this directory as the explicit native config root.
|
|
100
|
-
* - omitted (key not present) — fall back to the first segment of
|
|
101
|
-
* `skills.dir` when a verified Skill surface exists, otherwise `.<id>`.
|
|
102
|
-
* - `undefined` — explicit opt-out. Scanners SHALL NOT attempt to
|
|
103
|
-
* discover native config for this agent. Use this when an agent's
|
|
104
|
-
* first `skills.dir` segment collides with another agent's (e.g.,
|
|
105
|
-
* several agents share a parent like `.agents`) and there is no
|
|
106
|
-
* authoritative answer about the real native config root.
|
|
107
|
-
*/
|
|
75
|
+
/** Explicit project native configuration root. Undefined suppresses root discovery. */
|
|
108
76
|
readonly rootDir?: string | undefined;
|
|
109
|
-
/**
|
|
77
|
+
/** Native Skill reader declarations, independent of AXM writer support. */
|
|
110
78
|
readonly skills?: AgentSkillsDescriptor;
|
|
111
79
|
/** Subagents installation configuration (optional — not all agents support subagents) */
|
|
112
80
|
readonly subagents?: AgentSubagentsDescriptor;
|
|
@@ -10,6 +10,6 @@ import { CONFIGURABLE_AGENT_IDS, } from "../agent-capabilities/identity.js";
|
|
|
10
10
|
// -----------------------------------------------------------------------------
|
|
11
11
|
/** @experimental This API is unstable and may change without notice. */
|
|
12
12
|
export { CONFIGURABLE_AGENT_IDS };
|
|
13
|
-
/**
|
|
14
|
-
export const MATERIALIZATION_TARGET_IDS = [...CONFIGURABLE_AGENT_IDS
|
|
13
|
+
/** Real agents that can participate in native materialization. @experimental */
|
|
14
|
+
export const MATERIALIZATION_TARGET_IDS = [...CONFIGURABLE_AGENT_IDS];
|
|
15
15
|
//# sourceMappingURL=types.js.map
|
|
@@ -677,8 +677,7 @@ export { AgentIdSchema };
|
|
|
677
677
|
/**
|
|
678
678
|
* Agent identifiers users may persist in `axm.json`.
|
|
679
679
|
*
|
|
680
|
-
*
|
|
681
|
-
* they are injected by repository code rather than configured by users.
|
|
680
|
+
* Shared native locations are policy, not additional agent identities.
|
|
682
681
|
*
|
|
683
682
|
* @experimental This API is unstable and may change without notice.
|
|
684
683
|
*/
|