@nepopsx/cli 0.0.25 → 0.1.0
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/agents/catalog.d.ts +6 -0
- package/dist/agents/catalog.d.ts.map +1 -1
- package/dist/agents/catalog.js.map +1 -1
- package/dist/agents/remote-config.d.ts +34 -1
- package/dist/agents/remote-config.d.ts.map +1 -1
- package/dist/agents/remote-config.js +31 -0
- package/dist/agents/remote-config.js.map +1 -1
- package/dist/commands/import-agents.d.ts.map +1 -1
- package/dist/commands/import-agents.js +166 -15
- package/dist/commands/import-agents.js.map +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +7 -0
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/install.d.ts +2 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +96 -19
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +1 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/push-learnings.d.ts.map +1 -1
- package/dist/commands/push-learnings.js +7 -0
- package/dist/commands/push-learnings.js.map +1 -1
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +17 -0
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +40 -4
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +90 -7
- package/dist/commands/up.js.map +1 -1
- package/dist/enrichment/workflow.d.ts.map +1 -1
- package/dist/enrichment/workflow.js +8 -1
- package/dist/enrichment/workflow.js.map +1 -1
- package/dist/generator/render.d.ts.map +1 -1
- package/dist/generator/render.js +4 -0
- package/dist/generator/render.js.map +1 -1
- package/dist/hooks/capture-hooks.d.ts +15 -1
- package/dist/hooks/capture-hooks.d.ts.map +1 -1
- package/dist/hooks/capture-hooks.js +20 -2
- package/dist/hooks/capture-hooks.js.map +1 -1
- package/dist/hooks/capture-hooks.test.js +40 -1
- package/dist/hooks/capture-hooks.test.js.map +1 -1
- package/dist/hooks/wire-loop.d.ts +21 -0
- package/dist/hooks/wire-loop.d.ts.map +1 -0
- package/dist/hooks/wire-loop.js +42 -0
- package/dist/hooks/wire-loop.js.map +1 -0
- package/dist/import/agents/agent-adapter.d.ts +6 -0
- package/dist/import/agents/agent-adapter.d.ts.map +1 -1
- package/dist/import/agents/agent-adapter.js +3 -0
- package/dist/import/agents/agent-adapter.js.map +1 -1
- package/dist/import/agents/artifact-parser.d.ts +8 -1
- package/dist/import/agents/artifact-parser.d.ts.map +1 -1
- package/dist/import/agents/artifact-parser.js +27 -0
- package/dist/import/agents/artifact-parser.js.map +1 -1
- package/dist/import/agents/assembler.d.ts.map +1 -1
- package/dist/import/agents/assembler.js +0 -0
- package/dist/import/agents/assembler.js.map +1 -1
- package/dist/import/agents/claude-code-adapter.d.ts.map +1 -1
- package/dist/import/agents/claude-code-adapter.js +24 -6
- package/dist/import/agents/claude-code-adapter.js.map +1 -1
- package/dist/import/agents/copilot-agent-adapter.d.ts.map +1 -1
- package/dist/import/agents/copilot-agent-adapter.js +6 -0
- package/dist/import/agents/copilot-agent-adapter.js.map +1 -1
- package/dist/import/agents/scanner.d.ts +8 -0
- package/dist/import/agents/scanner.d.ts.map +1 -1
- package/dist/import/agents/scanner.js +94 -6
- package/dist/import/agents/scanner.js.map +1 -1
- package/dist/import/agents/secret-scan.d.ts.map +1 -1
- package/dist/import/agents/secret-scan.js +7 -0
- package/dist/import/agents/secret-scan.js.map +1 -1
- package/dist/index.js +36 -2
- package/dist/index.js.map +1 -1
- package/dist/licensing/installer.d.ts +14 -0
- package/dist/licensing/installer.d.ts.map +1 -1
- package/dist/licensing/installer.js +3 -5
- package/dist/licensing/installer.js.map +1 -1
- package/dist/scan/config.d.ts.map +1 -1
- package/dist/scan/config.js +7 -0
- package/dist/scan/config.js.map +1 -1
- package/dist/utils/fetch.d.ts +8 -0
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +35 -0
- package/dist/utils/fetch.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-hooks.js","sourceRoot":"","sources":["../../src/hooks/capture-hooks.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"capture-hooks.js","sourceRoot":"","sources":["../../src/hooks/capture-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,10 @@ import { mkdtempSync, mkdirSync, readFileSync, writeFileSync, rmSync } from 'nod
|
|
|
4
4
|
import { tmpdir } from 'node:os';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
6
|
import { after, describe, it } from 'node:test';
|
|
7
|
-
import { generateCaptureHooks } from './capture-hooks.js';
|
|
7
|
+
import { generateCaptureHooks, generateGuardHook } from './capture-hooks.js';
|
|
8
|
+
function readClaude(dir) {
|
|
9
|
+
return JSON.parse(readFileSync(join(dir, '.claude/settings.json'), 'utf-8'));
|
|
10
|
+
}
|
|
8
11
|
describe('generateCaptureHooks', () => {
|
|
9
12
|
it('creates Copilot + Claude session-end hooks that call capture', () => {
|
|
10
13
|
const dir = mkdtempSync(join(tmpdir(), 'nepopsx-hooks-'));
|
|
@@ -46,5 +49,41 @@ describe('generateCaptureHooks', () => {
|
|
|
46
49
|
const written = generateCaptureHooks(dir, ['github-copilot']);
|
|
47
50
|
assert.deepEqual(written, ['.github/hooks/hooks.json']);
|
|
48
51
|
});
|
|
52
|
+
it('does NOT install the policy guard by default (capture and guard are independent)', () => {
|
|
53
|
+
const dir = mkdtempSync(join(tmpdir(), 'nepopsx-hooks-'));
|
|
54
|
+
after(() => rmSync(dir, { recursive: true, force: true }));
|
|
55
|
+
generateCaptureHooks(dir, ['claude-code']);
|
|
56
|
+
const claude = readClaude(dir);
|
|
57
|
+
assert.equal(claude.hooks?.SessionEnd?.length, 1);
|
|
58
|
+
// No guard wired unless explicitly requested.
|
|
59
|
+
assert.equal(claude.hooks?.PreToolUse, undefined);
|
|
60
|
+
});
|
|
61
|
+
it('installs the guard when installGuard:true (first-party install path)', () => {
|
|
62
|
+
const dir = mkdtempSync(join(tmpdir(), 'nepopsx-hooks-'));
|
|
63
|
+
after(() => rmSync(dir, { recursive: true, force: true }));
|
|
64
|
+
generateCaptureHooks(dir, ['claude-code'], { installGuard: true });
|
|
65
|
+
const claude = readClaude(dir);
|
|
66
|
+
assert.equal(claude.hooks?.SessionEnd?.length, 1);
|
|
67
|
+
assert.equal(claude.hooks?.PreToolUse?.length, 1);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('generateGuardHook', () => {
|
|
71
|
+
it('wires a Claude PreToolUse guard and is idempotent', () => {
|
|
72
|
+
const dir = mkdtempSync(join(tmpdir(), 'nepopsx-hooks-'));
|
|
73
|
+
after(() => rmSync(dir, { recursive: true, force: true }));
|
|
74
|
+
const written = generateGuardHook(dir, ['claude-code']);
|
|
75
|
+
assert.deepEqual(written, ['.claude/settings.json']);
|
|
76
|
+
const claude = readClaude(dir);
|
|
77
|
+
assert.equal(claude.hooks?.PreToolUse?.length, 1);
|
|
78
|
+
// No capture hook from guard alone.
|
|
79
|
+
assert.equal(claude.hooks?.SessionEnd, undefined);
|
|
80
|
+
const second = generateGuardHook(dir, ['claude-code']);
|
|
81
|
+
assert.deepEqual(second, []);
|
|
82
|
+
});
|
|
83
|
+
it('is a no-op for Copilot-only workspaces (guard is Claude-only)', () => {
|
|
84
|
+
const dir = mkdtempSync(join(tmpdir(), 'nepopsx-hooks-'));
|
|
85
|
+
after(() => rmSync(dir, { recursive: true, force: true }));
|
|
86
|
+
assert.deepEqual(generateGuardHook(dir, ['github-copilot']), []);
|
|
87
|
+
});
|
|
49
88
|
});
|
|
50
89
|
//# sourceMappingURL=capture-hooks.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-hooks.test.js","sourceRoot":"","sources":["../../src/hooks/capture-hooks.test.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"capture-hooks.test.js","sourceRoot":"","sources":["../../src/hooks/capture-hooks.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { OutputProvider } from "@nepopsx/core";
|
|
2
|
+
/** The platform capabilities to wire around an agent (recall/capture/guard/knowledge). */
|
|
3
|
+
export interface AgentLoopCapabilities {
|
|
4
|
+
workspaceKnowledge: boolean;
|
|
5
|
+
liveRecallMcp: boolean;
|
|
6
|
+
captureHooks: boolean;
|
|
7
|
+
guardHook: boolean;
|
|
8
|
+
}
|
|
9
|
+
/** All-on — install's historical default + the fallback when a backend omits capabilities. */
|
|
10
|
+
export declare const ALL_ON_CAPABILITIES: AgentLoopCapabilities;
|
|
11
|
+
/**
|
|
12
|
+
* Wire the self-learning loop around an agent from its CAPABILITY SET — the single place
|
|
13
|
+
* both `install` and `sync` use, so a first-party agent and a blessed custom agent get the
|
|
14
|
+
* loop wired identically ("once blessed, it's just an agent"). These are workspace-global
|
|
15
|
+
* files (`.mcp.json` / hooks), so they're written once for whatever capabilities are
|
|
16
|
+
* enabled. `workspaceKnowledge` needs no client wiring — it's baked into the agent body
|
|
17
|
+
* server-side. Idempotent + merge-safe (the underlying generators never clobber). Returns
|
|
18
|
+
* nothing; logs a concise line per wired feature.
|
|
19
|
+
*/
|
|
20
|
+
export declare function wireAgentLoop(rootDir: string, providers: OutputProvider[], capabilities: AgentLoopCapabilities): void;
|
|
21
|
+
//# sourceMappingURL=wire-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wire-loop.d.ts","sourceRoot":"","sources":["../../src/hooks/wire-loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKpD,0FAA0F;AAC1F,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,8FAA8F;AAC9F,eAAO,MAAM,mBAAmB,EAAE,qBAKjC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,cAAc,EAAE,EAC3B,YAAY,EAAE,qBAAqB,GAClC,IAAI,CAsBN"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { resolveApiBase } from "../config/api-config.js";
|
|
3
|
+
import { generateMcpConfig } from "../mcp/config-generator.js";
|
|
4
|
+
import { generateCaptureHooks, generateGuardHook } from "./capture-hooks.js";
|
|
5
|
+
/** All-on — install's historical default + the fallback when a backend omits capabilities. */
|
|
6
|
+
export const ALL_ON_CAPABILITIES = {
|
|
7
|
+
workspaceKnowledge: true,
|
|
8
|
+
liveRecallMcp: true,
|
|
9
|
+
captureHooks: true,
|
|
10
|
+
guardHook: true,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Wire the self-learning loop around an agent from its CAPABILITY SET — the single place
|
|
14
|
+
* both `install` and `sync` use, so a first-party agent and a blessed custom agent get the
|
|
15
|
+
* loop wired identically ("once blessed, it's just an agent"). These are workspace-global
|
|
16
|
+
* files (`.mcp.json` / hooks), so they're written once for whatever capabilities are
|
|
17
|
+
* enabled. `workspaceKnowledge` needs no client wiring — it's baked into the agent body
|
|
18
|
+
* server-side. Idempotent + merge-safe (the underlying generators never clobber). Returns
|
|
19
|
+
* nothing; logs a concise line per wired feature.
|
|
20
|
+
*/
|
|
21
|
+
export function wireAgentLoop(rootDir, providers, capabilities) {
|
|
22
|
+
if (capabilities.liveRecallMcp) {
|
|
23
|
+
const mcpFiles = generateMcpConfig({ rootDir, apiUrl: resolveApiBase(rootDir) });
|
|
24
|
+
if (mcpFiles.length > 0) {
|
|
25
|
+
console.log(chalk.dim(` Live recall (nepopsx-memory MCP): ${mcpFiles.join(", ")}`) +
|
|
26
|
+
chalk.dim(`\n → export NEPOPSX_DEVICE_TOKEN=<your device token> to authenticate recall`));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (capabilities.captureHooks) {
|
|
30
|
+
const hookFiles = generateCaptureHooks(rootDir, providers);
|
|
31
|
+
if (hookFiles.length > 0) {
|
|
32
|
+
console.log(chalk.dim(` Capture hooks (push-learnings on session end): ${hookFiles.join(", ")}`));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (capabilities.guardHook) {
|
|
36
|
+
const guardFiles = generateGuardHook(rootDir, providers);
|
|
37
|
+
if (guardFiles.length > 0) {
|
|
38
|
+
console.log(chalk.dim(` Policy guard hook (blocks unsafe tool calls): ${guardFiles.join(", ")}`));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=wire-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wire-loop.js","sourceRoot":"","sources":["../../src/hooks/wire-loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAU7E,8FAA8F;AAC9F,MAAM,CAAC,MAAM,mBAAmB,GAA0B;IACxD,kBAAkB,EAAE,IAAI;IACxB,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,SAA2B,EAC3B,YAAmC;IAEnC,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,uCAAuC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrE,KAAK,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -24,6 +24,10 @@ export interface RawHandoff {
|
|
|
24
24
|
agent: string;
|
|
25
25
|
label?: string;
|
|
26
26
|
prompt?: string;
|
|
27
|
+
/** Copilot: auto-send the prompt on handoff (vs. pre-fill). Load-bearing — preserved. */
|
|
28
|
+
send?: boolean;
|
|
29
|
+
/** Copilot: model to switch to for the handed-off agent. */
|
|
30
|
+
model?: string;
|
|
27
31
|
}
|
|
28
32
|
/**
|
|
29
33
|
* A comprehended agent. `raw` (verbatim source) is the byte-losslessness guarantee;
|
|
@@ -48,6 +52,8 @@ export interface RawAgent {
|
|
|
48
52
|
subAgents: string[];
|
|
49
53
|
/** Whether the model may auto-invoke it (Copilot `user-invocable`). */
|
|
50
54
|
userInvocable?: boolean;
|
|
55
|
+
/** Whether another agent may auto-select it as a subagent (Copilot `disable-model-invocation`). */
|
|
56
|
+
disableModelInvocation?: boolean;
|
|
51
57
|
/** Copilot surface scope (`vscode` | `github-copilot`). */
|
|
52
58
|
target?: string;
|
|
53
59
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-adapter.d.ts","sourceRoot":"","sources":["../../../src/import/agents/agent-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAEnE,0FAA0F;AAC1F,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAExD,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-adapter.d.ts","sourceRoot":"","sources":["../../../src/import/agents/agent-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAEnE,0FAA0F;AAC1F,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAExD,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,+CAA+C;IAC/C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,2CAA2C;IAC3C,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mGAAmG;IACnG,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,mBAAmB,CAAC;IACpC,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,mBAAmB,CAAC;IACxB,kFAAkF;IAClF,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,mFAAmF;IACnF,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;CAC5E;AAID,sFAAsF;AACtF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAY/D;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAIrD;AAED,iGAAiG;AACjG,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,EAAE,CAiB1D;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGtE"}
|
|
@@ -54,6 +54,9 @@ export function parseHandoffs(value) {
|
|
|
54
54
|
agent: e.agent,
|
|
55
55
|
label: typeof e.label === 'string' ? e.label : undefined,
|
|
56
56
|
prompt: typeof e.prompt === 'string' ? e.prompt : undefined,
|
|
57
|
+
// `send` (auto-send) + `model` are load-bearing Copilot handoff fields — preserve them.
|
|
58
|
+
send: typeof e.send === 'boolean' ? e.send : undefined,
|
|
59
|
+
model: typeof e.model === 'string' ? e.model : undefined,
|
|
57
60
|
});
|
|
58
61
|
}
|
|
59
62
|
return out;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-adapter.js","sourceRoot":"","sources":["../../../src/import/agents/agent-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-adapter.js","sourceRoot":"","sources":["../../../src/import/agents/agent-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* pairs them with secret redaction.)
|
|
8
8
|
*/
|
|
9
9
|
import { type AgentOriginProvider } from './agent-adapter.js';
|
|
10
|
-
export type ArtifactKind = 'skill' | 'command';
|
|
10
|
+
export type ArtifactKind = 'skill' | 'command' | 'instruction' | 'mcp' | 'config';
|
|
11
11
|
export interface RawArtifact {
|
|
12
12
|
kind: ArtifactKind;
|
|
13
13
|
/** Skill: kebab of the directory name. Command: kebab of the file stem. */
|
|
@@ -21,6 +21,13 @@ export interface RawArtifact {
|
|
|
21
21
|
}
|
|
22
22
|
/** Parse a SKILL.md. `dirName` is the skill's directory — its canonical identity. */
|
|
23
23
|
export declare function parseSkill(content: string, dirName: string, originProvider: AgentOriginProvider, importedFrom: string): RawArtifact;
|
|
24
|
+
/**
|
|
25
|
+
* Parse an ENVIRONMENT-layer file (instruction / config / mcp) that round-trips to its
|
|
26
|
+
* EXACT source path — AGENTS.md→AGENTS.md, openspec/schemas/x.yaml→same. Unlike skills/
|
|
27
|
+
* commands (which get reconstructed paths), these keep `importedFrom` as the render path.
|
|
28
|
+
* Slug = a path-derived stable id. Description from frontmatter if present, else the path.
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseEnvArtifact(content: string, kind: ArtifactKind, originProvider: AgentOriginProvider, importedFrom: string): RawArtifact;
|
|
24
31
|
/** Parse a slash command / prompt file. */
|
|
25
32
|
export declare function parseCommand(filePath: string, content: string, suffix: string, originProvider: AgentOriginProvider, importedFrom: string): RawArtifact;
|
|
26
33
|
//# sourceMappingURL=artifact-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-parser.d.ts","sourceRoot":"","sources":["../../../src/import/agents/artifact-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,KAAK,mBAAmB,EAAiB,MAAM,oBAAoB,CAAC;AAE7E,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"artifact-parser.d.ts","sourceRoot":"","sources":["../../../src/import/agents/artifact-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,KAAK,mBAAmB,EAAiB,MAAM,oBAAoB,CAAC;AAE7E,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC;AAElF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,mBAAmB,CAAC;CACrC;AAED,qFAAqF;AACrF,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,mBAAmB,EACnC,YAAY,EAAE,MAAM,GACnB,WAAW,CAYb;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,YAAY,EAClB,cAAc,EAAE,mBAAmB,EACnC,YAAY,EAAE,MAAM,GACnB,WAAW,CAmBb;AAED,2CAA2C;AAC3C,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,EACnC,YAAY,EAAE,MAAM,GACnB,WAAW,CAab"}
|
|
@@ -22,6 +22,33 @@ export function parseSkill(content, dirName, originProvider, importedFrom) {
|
|
|
22
22
|
originProvider,
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Parse an ENVIRONMENT-layer file (instruction / config / mcp) that round-trips to its
|
|
27
|
+
* EXACT source path — AGENTS.md→AGENTS.md, openspec/schemas/x.yaml→same. Unlike skills/
|
|
28
|
+
* commands (which get reconstructed paths), these keep `importedFrom` as the render path.
|
|
29
|
+
* Slug = a path-derived stable id. Description from frontmatter if present, else the path.
|
|
30
|
+
*/
|
|
31
|
+
export function parseEnvArtifact(content, kind, originProvider, importedFrom) {
|
|
32
|
+
// Frontmatter is optional for these (most are plain markdown/yaml/json).
|
|
33
|
+
let description;
|
|
34
|
+
try {
|
|
35
|
+
const { data } = parseFrontmatter(content);
|
|
36
|
+
description = typeof data.description === 'string' ? data.description : undefined;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
/* no frontmatter — fine */
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
kind,
|
|
43
|
+
slug: kebab(importedFrom.replace(/[/.]/g, '-')),
|
|
44
|
+
name: importedFrom, // the source path IS the identity for env files
|
|
45
|
+
description,
|
|
46
|
+
body: content,
|
|
47
|
+
raw: content,
|
|
48
|
+
importedFrom,
|
|
49
|
+
originProvider,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
25
52
|
/** Parse a slash command / prompt file. */
|
|
26
53
|
export function parseCommand(filePath, content, suffix, originProvider, importedFrom) {
|
|
27
54
|
const { data, body } = parseFrontmatter(content);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-parser.js","sourceRoot":"","sources":["../../../src/import/agents/artifact-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAA4B,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAgB7E,qFAAqF;AACrF,MAAM,UAAU,UAAU,CACxB,OAAe,EACf,OAAe,EACf,cAAmC,EACnC,YAAoB;IAEpB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;QACpB,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO;QACpF,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAChF,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACjB,GAAG,EAAE,OAAO;QACZ,YAAY;QACZ,cAAc;KACf,CAAC;AACJ,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,OAAe,EACf,MAAc,EACd,cAAmC,EACnC,YAAoB;IAEpB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;QACjB,IAAI;QACJ,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAChF,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACjB,GAAG,EAAE,OAAO;QACZ,YAAY;QACZ,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"artifact-parser.js","sourceRoot":"","sources":["../../../src/import/agents/artifact-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAA4B,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAgB7E,qFAAqF;AACrF,MAAM,UAAU,UAAU,CACxB,OAAe,EACf,OAAe,EACf,cAAmC,EACnC,YAAoB;IAEpB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;QACpB,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO;QACpF,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAChF,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACjB,GAAG,EAAE,OAAO;QACZ,YAAY;QACZ,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,IAAkB,EAClB,cAAmC,EACnC,YAAoB;IAEpB,yEAAyE;IACzE,IAAI,WAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC3C,WAAW,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IACD,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,EAAE,YAAY,EAAE,gDAAgD;QACpE,WAAW;QACX,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,OAAO;QACZ,YAAY;QACZ,cAAc;KACf,CAAC;AACJ,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,OAAe,EACf,MAAc,EACd,cAAmC,EACnC,YAAoB;IAEpB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;QACjB,IAAI;QACJ,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAChF,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACjB,GAAG,EAAE,OAAO;QACZ,YAAY;QACZ,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assembler.d.ts","sourceRoot":"","sources":["../../../src/import/agents/assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,QAAQ,EAAgB,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,SAAS;IACxB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7B,mEAAmE;IACnE,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,QAAQ,CAAC;IAChB,oGAAoG;IACpG,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,8DAA8D;IAC9D,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"assembler.d.ts","sourceRoot":"","sources":["../../../src/import/agents/assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,QAAQ,EAAgB,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,SAAS;IACxB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7B,mEAAmE;IACnE,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,QAAQ,CAAC;IAChB,oGAAoG;IACpG,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,8DAA8D;IAC9D,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,EAAE,CAgE/D"}
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assembler.js","sourceRoot":"","sources":["../../../src/import/agents/assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAyC,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAwBzF,uDAAuD;AACvD,MAAM,UAAU,eAAe,CAAC,IAAgB;IAC9C,kFAAkF;IAClF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAwB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"assembler.js","sourceRoot":"","sources":["../../../src/import/agents/assembler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code-adapter.d.ts","sourceRoot":"","sources":["../../../src/import/agents/claude-code-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACL,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"claude-code-adapter.d.ts","sourceRoot":"","sources":["../../../src/import/agents/claude-code-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,oBAAoB,CAAC;AAkB5B,eAAO,MAAM,sBAAsB,EAAE,YAgEpC,CAAC"}
|
|
@@ -8,9 +8,22 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { join, relative } from 'node:path';
|
|
10
10
|
import { parseFrontmatter, kebab } from '../adapter.js';
|
|
11
|
-
import { agentBaseName, listFiles, toStringList, } from './agent-adapter.js';
|
|
12
|
-
/**
|
|
13
|
-
|
|
11
|
+
import { agentBaseName, listFiles, parseHandoffs, toStringList, } from './agent-adapter.js';
|
|
12
|
+
/**
|
|
13
|
+
* Keys mapped to first-class RawAgent fields; the rest flow into `extra`.
|
|
14
|
+
* `agents`/`handoffs` are first-class so a Claude orchestrator keeps its sub-agent
|
|
15
|
+
* graph (an agent that declares `agents:` is an orchestrator → `command` kind),
|
|
16
|
+
* mirroring the Copilot adapter — otherwise the graph would be silently lost.
|
|
17
|
+
*/
|
|
18
|
+
const KNOWN_CLAUDE_KEYS = new Set([
|
|
19
|
+
'name',
|
|
20
|
+
'description',
|
|
21
|
+
'tools',
|
|
22
|
+
'disallowedTools',
|
|
23
|
+
'model',
|
|
24
|
+
'agents',
|
|
25
|
+
'handoffs',
|
|
26
|
+
]);
|
|
14
27
|
export const claudeCodeAgentAdapter = {
|
|
15
28
|
id: 'claude-code',
|
|
16
29
|
detect(rootDir) {
|
|
@@ -38,22 +51,27 @@ export const claudeCodeAgentAdapter = {
|
|
|
38
51
|
detail: 'No tools listed — a Claude subagent inherits all tools.',
|
|
39
52
|
});
|
|
40
53
|
}
|
|
54
|
+
// A Claude agent that declares `agents:` is an orchestrator; preserve its graph.
|
|
55
|
+
const subAgents = toStringList(data.agents);
|
|
56
|
+
const handoffs = parseHandoffs(data.handoffs);
|
|
57
|
+
const kind = subAgents.length > 0 ? 'command' : 'agent';
|
|
41
58
|
const extra = {};
|
|
42
59
|
for (const [k, v] of Object.entries(data)) {
|
|
43
60
|
if (!KNOWN_CLAUDE_KEYS.has(k))
|
|
44
61
|
extra[k] = v;
|
|
45
62
|
}
|
|
46
63
|
return {
|
|
47
|
-
kind
|
|
64
|
+
kind,
|
|
48
65
|
slug: kebab(name),
|
|
49
66
|
name,
|
|
50
67
|
description,
|
|
51
68
|
modelRaw: data.model,
|
|
52
69
|
tools,
|
|
53
70
|
disallowedTools: toStringList(data.disallowedTools),
|
|
54
|
-
handoffs
|
|
55
|
-
subAgents
|
|
71
|
+
handoffs,
|
|
72
|
+
subAgents,
|
|
56
73
|
userInvocable: undefined,
|
|
74
|
+
disableModelInvocation: undefined,
|
|
57
75
|
target: undefined,
|
|
58
76
|
extra,
|
|
59
77
|
instructions: body.trim(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code-adapter.js","sourceRoot":"","sources":["../../../src/import/agents/claude-code-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAGL,aAAa,EACb,SAAS,EACT,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B
|
|
1
|
+
{"version":3,"file":"claude-code-adapter.js","sourceRoot":"","sources":["../../../src/import/agents/claude-code-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-agent-adapter.d.ts","sourceRoot":"","sources":["../../../src/import/agents/copilot-agent-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,oBAAoB,CAAC;AAe5B,eAAO,MAAM,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"copilot-agent-adapter.d.ts","sourceRoot":"","sources":["../../../src/import/agents/copilot-agent-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,oBAAoB,CAAC;AAe5B,eAAO,MAAM,mBAAmB,EAAE,YA6EjC,CAAC"}
|
|
@@ -53,6 +53,11 @@ export const copilotAgentAdapter = {
|
|
|
53
53
|
detail: 'Retired `infer: false` mapped forward to user-invocable: false.',
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
|
+
// Capture `disable-model-invocation` as a first-class field so it survives a
|
|
57
|
+
// round-trip render (was previously excluded from `extra` AND not stored → lost).
|
|
58
|
+
const disableModelInvocation = typeof data['disable-model-invocation'] === 'boolean'
|
|
59
|
+
? data['disable-model-invocation']
|
|
60
|
+
: undefined;
|
|
56
61
|
if (suffix === '.chatmode.md') {
|
|
57
62
|
fidelity.push({
|
|
58
63
|
field: 'format',
|
|
@@ -76,6 +81,7 @@ export const copilotAgentAdapter = {
|
|
|
76
81
|
handoffs,
|
|
77
82
|
subAgents,
|
|
78
83
|
userInvocable,
|
|
84
|
+
disableModelInvocation,
|
|
79
85
|
target: typeof data.target === 'string' ? data.target : undefined,
|
|
80
86
|
extra,
|
|
81
87
|
instructions: body.trim(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-agent-adapter.js","sourceRoot":"","sources":["../../../src/import/agents/copilot-agent-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAGL,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,MAAM;IACN,aAAa;IACb,OAAO;IACP,OAAO;IACP,QAAQ;IACR,UAAU;IACV,gBAAgB;IAChB,0BAA0B;IAC1B,OAAO;IACP,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAiB;IAC/C,EAAE,EAAE,gBAAgB;IAEpB,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC;YAC7D,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC;SACpE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO;QAC9B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAwB,EAAE,CAAC;QAEzC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;QAChF,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAC/C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAClB,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAExF,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;QAExD,+DAA+D;QAC/D,IAAI,aAAkC,CAAC;QACvC,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,SAAS;YAAE,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxF,IAAI,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACxD,aAAa,GAAG,KAAK,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,iEAAiE;aAC1E,CAAC,CAAC;QACL,CAAC;
|
|
1
|
+
{"version":3,"file":"copilot-agent-adapter.js","sourceRoot":"","sources":["../../../src/import/agents/copilot-agent-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAGL,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,MAAM;IACN,aAAa;IACb,OAAO;IACP,OAAO;IACP,QAAQ;IACR,UAAU;IACV,gBAAgB;IAChB,0BAA0B;IAC1B,OAAO;IACP,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAiB;IAC/C,EAAE,EAAE,gBAAgB;IAEpB,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC;YAC7D,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC;SACpE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO;QAC9B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAwB,EAAE,CAAC;QAEzC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;QAChF,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAC/C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAClB,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAExF,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;QAExD,+DAA+D;QAC/D,IAAI,aAAkC,CAAC;QACvC,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,SAAS;YAAE,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxF,IAAI,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACxD,aAAa,GAAG,KAAK,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,iEAAiE;aAC1E,CAAC,CAAC;QACL,CAAC;QACD,6EAA6E;QAC7E,kFAAkF;QAClF,MAAM,sBAAsB,GAC1B,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,SAAS;YACnD,CAAC,CAAE,IAAI,CAAC,0BAA0B,CAAa;YAC/C,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,iEAAiE;aAC1E,CAAC,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO;YACL,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;YACjB,IAAI;YACJ,WAAW;YACX,QAAQ,EAAE,IAAI,CAAC,KAAK;YACpB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/B,eAAe,EAAE,EAAE;YACnB,QAAQ;YACR,SAAS;YACT,aAAa;YACb,sBAAsB;YACtB,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACjE,KAAK;YACL,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE;YACzB,cAAc,EAAE,gBAAgB;YAChC,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;YAC7D,GAAG,EAAE,OAAO;YACZ,QAAQ;SACT,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -10,6 +10,14 @@ export interface ScanResult {
|
|
|
10
10
|
agents: RawAgent[];
|
|
11
11
|
skills: RawArtifact[];
|
|
12
12
|
commands: RawArtifact[];
|
|
13
|
+
/**
|
|
14
|
+
* Environment layer: instruction files, MCP configs, openspec/workflow config blobs.
|
|
15
|
+
* Optional so test fixtures that only exercise agent assembly can omit them; `scanRepo`
|
|
16
|
+
* always populates them.
|
|
17
|
+
*/
|
|
18
|
+
instructions?: RawArtifact[];
|
|
19
|
+
mcp?: RawArtifact[];
|
|
20
|
+
config?: RawArtifact[];
|
|
13
21
|
}
|
|
14
22
|
export declare function scanRepo(rootDir: string): ScanResult;
|
|
15
23
|
//# sourceMappingURL=scanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../src/import/agents/scanner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAA4B,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG7E,OAAO,EAAE,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../src/import/agents/scanner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAA4B,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG7E,OAAO,EAAE,KAAK,WAAW,EAA8C,MAAM,sBAAsB,CAAC;AAIpG,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAqDD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAsCpD"}
|
|
@@ -8,7 +8,7 @@ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
|
8
8
|
import { basename, join, relative } from 'node:path';
|
|
9
9
|
import { claudeCodeAgentAdapter } from './claude-code-adapter.js';
|
|
10
10
|
import { copilotAgentAdapter } from './copilot-agent-adapter.js';
|
|
11
|
-
import { parseSkill, parseCommand } from './artifact-parser.js';
|
|
11
|
+
import { parseSkill, parseCommand, parseEnvArtifact } from './artifact-parser.js';
|
|
12
12
|
const AGENT_ADAPTERS = [claudeCodeAgentAdapter, copilotAgentAdapter];
|
|
13
13
|
function rel(rootDir, p) {
|
|
14
14
|
return relative(rootDir, p).replace(/\\/g, '/');
|
|
@@ -56,11 +56,23 @@ function listSkillDirs(dir, fileName) {
|
|
|
56
56
|
}
|
|
57
57
|
return out.sort((a, b) => a.dirName.localeCompare(b.dirName));
|
|
58
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* NEPOPSX stamps every rendered agent with a watermark comment
|
|
61
|
+
* (`<!-- NEPOPSX v… | … | FP: … -->`). The compiler must NOT re-import its own
|
|
62
|
+
* output — otherwise a customer who ran `up`/`install` first sees their review
|
|
63
|
+
* queue flooded with our first-party agents. Skip any file carrying the mark.
|
|
64
|
+
*/
|
|
65
|
+
function isNepopsxRendered(content) {
|
|
66
|
+
return /<!--\s*NEPOPSX\s+v[\d.]/i.test(content);
|
|
67
|
+
}
|
|
59
68
|
export function scanRepo(rootDir) {
|
|
60
69
|
const agents = [];
|
|
61
70
|
for (const adapter of AGENT_ADAPTERS) {
|
|
62
71
|
for (const file of adapter.detect(rootDir)) {
|
|
63
|
-
const
|
|
72
|
+
const content = readFileSync(file, 'utf-8');
|
|
73
|
+
if (isNepopsxRendered(content))
|
|
74
|
+
continue; // our own output — not a foreign agent
|
|
75
|
+
const parsed = adapter.parse(file, content, rootDir);
|
|
64
76
|
if (parsed)
|
|
65
77
|
agents.push(parsed);
|
|
66
78
|
}
|
|
@@ -72,16 +84,92 @@ export function scanRepo(rootDir) {
|
|
|
72
84
|
];
|
|
73
85
|
for (const [provider, parts] of skillRoots) {
|
|
74
86
|
for (const { dirName, file } of listSkillDirs(join(rootDir, ...parts), 'SKILL.md')) {
|
|
75
|
-
|
|
87
|
+
const content = readFileSync(file, 'utf-8');
|
|
88
|
+
if (isNepopsxRendered(content))
|
|
89
|
+
continue;
|
|
90
|
+
skills.push(parseSkill(content, dirName, provider, rel(rootDir, file)));
|
|
76
91
|
}
|
|
77
92
|
}
|
|
78
93
|
const commands = [];
|
|
79
94
|
for (const file of walkFiles(join(rootDir, '.claude', 'commands'), '.md')) {
|
|
80
|
-
|
|
95
|
+
const content = readFileSync(file, 'utf-8');
|
|
96
|
+
if (isNepopsxRendered(content))
|
|
97
|
+
continue;
|
|
98
|
+
commands.push(parseCommand(file, content, '.md', 'claude-code', rel(rootDir, file)));
|
|
81
99
|
}
|
|
82
100
|
for (const file of walkFiles(join(rootDir, '.github', 'prompts'), '.prompt.md')) {
|
|
83
|
-
|
|
101
|
+
const content = readFileSync(file, 'utf-8');
|
|
102
|
+
if (isNepopsxRendered(content))
|
|
103
|
+
continue;
|
|
104
|
+
commands.push(parseCommand(file, content, '.prompt.md', 'github-copilot', rel(rootDir, file)));
|
|
105
|
+
}
|
|
106
|
+
const { instructions, mcp, config } = scanEnvironment(rootDir);
|
|
107
|
+
return { agents, skills, commands, instructions, mcp, config };
|
|
108
|
+
}
|
|
109
|
+
/** Read a single file if it exists (and isn't NEPOPSX-rendered); else null. */
|
|
110
|
+
function readForeign(file) {
|
|
111
|
+
if (!existsSync(file))
|
|
112
|
+
return null;
|
|
113
|
+
const content = readFileSync(file, 'utf-8');
|
|
114
|
+
return isNepopsxRendered(content) ? null : content;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Scan the ENVIRONMENT layer (slice beyond agents/skills/commands):
|
|
118
|
+
* - INSTRUCTION files: AGENTS.md, CLAUDE.md, .github/copilot-instructions.md, and
|
|
119
|
+
* .github/instructions/*.instructions.md — the "READMEs for agents" (no merge; each
|
|
120
|
+
* round-trips verbatim to its own path). Provider tag is informational only.
|
|
121
|
+
* - MCP: `.mcp.json` (a customer's existing MCP server registry) — security-sensitive,
|
|
122
|
+
* governed like everything else (token redaction happens at the import payload).
|
|
123
|
+
* - CONFIG: openspec/ schemas + changes and .github/workflows — opaque passthrough blobs.
|
|
124
|
+
*/
|
|
125
|
+
function scanEnvironment(rootDir) {
|
|
126
|
+
const instructions = [];
|
|
127
|
+
const instFiles = [
|
|
128
|
+
['claude-code', 'AGENTS.md'],
|
|
129
|
+
['claude-code', 'CLAUDE.md'],
|
|
130
|
+
['github-copilot', '.github/copilot-instructions.md'],
|
|
131
|
+
];
|
|
132
|
+
for (const [provider, relPath] of instFiles) {
|
|
133
|
+
const content = readForeign(join(rootDir, relPath));
|
|
134
|
+
if (content)
|
|
135
|
+
instructions.push(parseEnvArtifact(content, 'instruction', provider, relPath));
|
|
136
|
+
}
|
|
137
|
+
for (const file of walkFiles(join(rootDir, '.github', 'instructions'), '.instructions.md')) {
|
|
138
|
+
const content = readForeign(file);
|
|
139
|
+
if (content)
|
|
140
|
+
instructions.push(parseEnvArtifact(content, 'instruction', 'github-copilot', rel(rootDir, file)));
|
|
141
|
+
}
|
|
142
|
+
const mcp = [];
|
|
143
|
+
for (const relPath of ['.mcp.json', '.vscode/mcp.json']) {
|
|
144
|
+
const content = readForeign(join(rootDir, relPath));
|
|
145
|
+
// Skip a .mcp.json that ONLY contains our own nepopsx-memory server (our output).
|
|
146
|
+
if (content && !isOnlyNepopsxMcp(content)) {
|
|
147
|
+
mcp.push(parseEnvArtifact(content, 'mcp', '.vscode' === relPath.split('/')[0] ? 'github-copilot' : 'claude-code', relPath));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const config = [];
|
|
151
|
+
const configRoots = [
|
|
152
|
+
['claude-code', 'openspec', ''], // any file under openspec/
|
|
153
|
+
['github-copilot', '.github/workflows', ''],
|
|
154
|
+
];
|
|
155
|
+
for (const [provider, dir] of configRoots.map(([p, d]) => [p, d])) {
|
|
156
|
+
for (const file of walkFiles(join(rootDir, dir), '')) {
|
|
157
|
+
const content = readForeign(file);
|
|
158
|
+
if (content)
|
|
159
|
+
config.push(parseEnvArtifact(content, 'config', provider, rel(rootDir, file)));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return { instructions, mcp, config };
|
|
163
|
+
}
|
|
164
|
+
/** True if a `.mcp.json` declares ONLY the nepopsx-memory server (i.e. it's our own output). */
|
|
165
|
+
function isOnlyNepopsxMcp(content) {
|
|
166
|
+
try {
|
|
167
|
+
const obj = JSON.parse(content);
|
|
168
|
+
const keys = Object.keys(obj.mcpServers ?? {});
|
|
169
|
+
return keys.length > 0 && keys.every((k) => k === 'nepopsx-memory');
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return false;
|
|
84
173
|
}
|
|
85
|
-
return { agents, skills, commands };
|
|
86
174
|
}
|
|
87
175
|
//# sourceMappingURL=scanner.js.map
|