@x-code-cli/core 0.2.10 → 0.3.1
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/agent/compression.d.ts +12 -2
- package/dist/agent/compression.d.ts.map +1 -1
- package/dist/agent/compression.js +51 -2
- package/dist/agent/compression.js.map +1 -1
- package/dist/agent/file-ingest.js +2 -2
- package/dist/agent/file-ingest.js.map +1 -1
- package/dist/agent/loop-state.d.ts +3 -2
- package/dist/agent/loop-state.d.ts.map +1 -1
- package/dist/agent/loop-state.js.map +1 -1
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +134 -5
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/memory-extractor.js +5 -5
- package/dist/agent/memory-extractor.js.map +1 -1
- package/dist/agent/plan-storage.js +1 -1
- package/dist/agent/plan-storage.js.map +1 -1
- package/dist/agent/sub-agents/index.d.ts +2 -1
- package/dist/agent/sub-agents/index.d.ts.map +1 -1
- package/dist/agent/sub-agents/index.js +1 -1
- package/dist/agent/sub-agents/index.js.map +1 -1
- package/dist/agent/sub-agents/loader.d.ts +13 -3
- package/dist/agent/sub-agents/loader.d.ts.map +1 -1
- package/dist/agent/sub-agents/loader.js +36 -9
- package/dist/agent/sub-agents/loader.js.map +1 -1
- package/dist/agent/sub-agents/registry.d.ts +18 -1
- package/dist/agent/sub-agents/registry.d.ts.map +1 -1
- package/dist/agent/sub-agents/registry.js +38 -5
- package/dist/agent/sub-agents/registry.js.map +1 -1
- package/dist/agent/sub-agents/runner.d.ts.map +1 -1
- package/dist/agent/sub-agents/runner.js +45 -1
- package/dist/agent/sub-agents/runner.js.map +1 -1
- package/dist/agent/sub-agents/types.d.ts +4 -1
- package/dist/agent/sub-agents/types.d.ts.map +1 -1
- package/dist/agent/system-prompt.d.ts +21 -0
- package/dist/agent/system-prompt.d.ts.map +1 -1
- package/dist/agent/system-prompt.js +68 -2
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/tool-execution.d.ts.map +1 -1
- package/dist/agent/tool-execution.js +220 -1
- package/dist/agent/tool-execution.js.map +1 -1
- package/dist/commands/index.d.ts +6 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +3 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/loader.d.ts +19 -0
- package/dist/commands/loader.d.ts.map +1 -0
- package/dist/commands/loader.js +109 -0
- package/dist/commands/loader.js.map +1 -0
- package/dist/commands/registry.d.ts +44 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +102 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/types.d.ts +23 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +26 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +12 -10
- package/dist/config/index.js.map +1 -1
- package/dist/hooks/bus.d.ts +54 -0
- package/dist/hooks/bus.d.ts.map +1 -0
- package/dist/hooks/bus.js +165 -0
- package/dist/hooks/bus.js.map +1 -0
- package/dist/hooks/config-schema.d.ts +854 -0
- package/dist/hooks/config-schema.d.ts.map +1 -0
- package/dist/hooks/config-schema.js +79 -0
- package/dist/hooks/config-schema.js.map +1 -0
- package/dist/hooks/executor.d.ts +16 -0
- package/dist/hooks/executor.d.ts.map +1 -0
- package/dist/hooks/executor.js +183 -0
- package/dist/hooks/executor.js.map +1 -0
- package/dist/hooks/index.d.ts +10 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +6 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/registry.d.ts +23 -0
- package/dist/hooks/registry.d.ts.map +1 -0
- package/dist/hooks/registry.js +49 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/types.d.ts +165 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +25 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/hooks/variables.d.ts +22 -0
- package/dist/hooks/variables.d.ts.map +1 -0
- package/dist/hooks/variables.js +80 -0
- package/dist/hooks/variables.js.map +1 -0
- package/dist/index.d.ts +57 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -2
- package/dist/index.js.map +1 -1
- package/dist/knowledge/auto-memory.d.ts +1 -1
- package/dist/knowledge/auto-memory.d.ts.map +1 -1
- package/dist/knowledge/auto-memory.js +10 -10
- package/dist/knowledge/auto-memory.js.map +1 -1
- package/dist/knowledge/loader.js +12 -12
- package/dist/knowledge/loader.js.map +1 -1
- package/dist/mcp/arg-parser.d.ts +49 -0
- package/dist/mcp/arg-parser.d.ts.map +1 -0
- package/dist/mcp/arg-parser.js +357 -0
- package/dist/mcp/arg-parser.js.map +1 -0
- package/dist/mcp/client.d.ts +73 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +376 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/config-schema.d.ts +64 -0
- package/dist/mcp/config-schema.d.ts.map +1 -0
- package/dist/mcp/config-schema.js +86 -0
- package/dist/mcp/config-schema.js.map +1 -0
- package/dist/mcp/config-writer.d.ts +41 -0
- package/dist/mcp/config-writer.d.ts.map +1 -0
- package/dist/mcp/config-writer.js +138 -0
- package/dist/mcp/config-writer.js.map +1 -0
- package/dist/mcp/env-safety.d.ts +12 -0
- package/dist/mcp/env-safety.d.ts.map +1 -0
- package/dist/mcp/env-safety.js +80 -0
- package/dist/mcp/env-safety.js.map +1 -0
- package/dist/mcp/expand-env.d.ts +14 -0
- package/dist/mcp/expand-env.d.ts.map +1 -0
- package/dist/mcp/expand-env.js +52 -0
- package/dist/mcp/expand-env.js.map +1 -0
- package/dist/mcp/loader.d.ts +81 -0
- package/dist/mcp/loader.d.ts.map +1 -0
- package/dist/mcp/loader.js +223 -0
- package/dist/mcp/loader.js.map +1 -0
- package/dist/mcp/name-mangling.d.ts +11 -0
- package/dist/mcp/name-mangling.d.ts.map +1 -0
- package/dist/mcp/name-mangling.js +82 -0
- package/dist/mcp/name-mangling.js.map +1 -0
- package/dist/mcp/oauth/callback-server.d.ts +25 -0
- package/dist/mcp/oauth/callback-server.d.ts.map +1 -0
- package/dist/mcp/oauth/callback-server.js +118 -0
- package/dist/mcp/oauth/callback-server.js.map +1 -0
- package/dist/mcp/oauth/provider.d.ts +80 -0
- package/dist/mcp/oauth/provider.d.ts.map +1 -0
- package/dist/mcp/oauth/provider.js +292 -0
- package/dist/mcp/oauth/provider.js.map +1 -0
- package/dist/mcp/oauth/token-storage.d.ts +42 -0
- package/dist/mcp/oauth/token-storage.d.ts.map +1 -0
- package/dist/mcp/oauth/token-storage.js +121 -0
- package/dist/mcp/oauth/token-storage.js.map +1 -0
- package/dist/mcp/permissions.d.ts +28 -0
- package/dist/mcp/permissions.d.ts.map +1 -0
- package/dist/mcp/permissions.js +105 -0
- package/dist/mcp/permissions.js.map +1 -0
- package/dist/mcp/registry.d.ts +150 -0
- package/dist/mcp/registry.d.ts.map +1 -0
- package/dist/mcp/registry.js +334 -0
- package/dist/mcp/registry.js.map +1 -0
- package/dist/mcp/resources.d.ts +7 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +40 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/tool-bridge.d.ts +16 -0
- package/dist/mcp/tool-bridge.d.ts.map +1 -0
- package/dist/mcp/tool-bridge.js +56 -0
- package/dist/mcp/tool-bridge.js.map +1 -0
- package/dist/mcp/trust.d.ts +31 -0
- package/dist/mcp/trust.d.ts.map +1 -0
- package/dist/mcp/trust.js +103 -0
- package/dist/mcp/trust.js.map +1 -0
- package/dist/mcp/types.d.ts +73 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +13 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/permissions/index.d.ts +1 -1
- package/dist/permissions/index.d.ts.map +1 -1
- package/dist/permissions/index.js +10 -4
- package/dist/permissions/index.js.map +1 -1
- package/dist/permissions/session-store.d.ts +79 -17
- package/dist/permissions/session-store.d.ts.map +1 -1
- package/dist/permissions/session-store.js +298 -38
- package/dist/permissions/session-store.js.map +1 -1
- package/dist/plugins/consent.d.ts +87 -0
- package/dist/plugins/consent.d.ts.map +1 -0
- package/dist/plugins/consent.js +181 -0
- package/dist/plugins/consent.js.map +1 -0
- package/dist/plugins/enable-state.d.ts +34 -0
- package/dist/plugins/enable-state.d.ts.map +1 -0
- package/dist/plugins/enable-state.js +159 -0
- package/dist/plugins/enable-state.js.map +1 -0
- package/dist/plugins/installer.d.ts +64 -0
- package/dist/plugins/installer.d.ts.map +1 -0
- package/dist/plugins/installer.js +416 -0
- package/dist/plugins/installer.js.map +1 -0
- package/dist/plugins/integration.d.ts +91 -0
- package/dist/plugins/integration.d.ts.map +1 -0
- package/dist/plugins/integration.js +233 -0
- package/dist/plugins/integration.js.map +1 -0
- package/dist/plugins/loader.d.ts +69 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +243 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/manifest.d.ts +23 -0
- package/dist/plugins/manifest.d.ts.map +1 -0
- package/dist/plugins/manifest.js +143 -0
- package/dist/plugins/manifest.js.map +1 -0
- package/dist/plugins/marketplace.d.ts +103 -0
- package/dist/plugins/marketplace.d.ts.map +1 -0
- package/dist/plugins/marketplace.js +532 -0
- package/dist/plugins/marketplace.js.map +1 -0
- package/dist/plugins/paths.d.ts +44 -0
- package/dist/plugins/paths.d.ts.map +1 -0
- package/dist/plugins/paths.js +89 -0
- package/dist/plugins/paths.js.map +1 -0
- package/dist/plugins/refresh.d.ts +61 -0
- package/dist/plugins/refresh.d.ts.map +1 -0
- package/dist/plugins/refresh.js +98 -0
- package/dist/plugins/refresh.js.map +1 -0
- package/dist/plugins/registry.d.ts +40 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +80 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/types.d.ts +225 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +16 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/plugins/user-config.d.ts +22 -0
- package/dist/plugins/user-config.d.ts.map +1 -0
- package/dist/plugins/user-config.js +96 -0
- package/dist/plugins/user-config.js.map +1 -0
- package/dist/skills/loader.d.ts +19 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +197 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/registry.d.ts +74 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +136 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/settings.d.ts +13 -0
- package/dist/skills/settings.d.ts.map +1 -0
- package/dist/skills/settings.js +100 -0
- package/dist/skills/settings.js.map +1 -0
- package/dist/tools/activate-skill.d.ts +5 -0
- package/dist/tools/activate-skill.d.ts.map +1 -0
- package/dist/tools/activate-skill.js +33 -0
- package/dist/tools/activate-skill.js.map +1 -0
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/shell-utils.d.ts.map +1 -1
- package/dist/tools/shell-utils.js +157 -6
- package/dist/tools/shell-utils.js.map +1 -1
- package/dist/tools/todo-write.d.ts +1 -1
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +2 -1
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/types/index.d.ts +46 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils.d.ts +23 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +76 -20
- package/dist/utils.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +47 -0
- package/dist/version.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// Skill settings — disabledSkills list per scope.
|
|
2
|
+
//
|
|
3
|
+
// User scope: ~/.x-code/settings.json
|
|
4
|
+
// Project scope: <repo-root>/.x-code/settings.local.json (gitignored)
|
|
5
|
+
//
|
|
6
|
+
// Both files share the shape `{ disabledSkills?: string[] }`. A skill is
|
|
7
|
+
// effectively disabled when its name appears in EITHER scope's list — we
|
|
8
|
+
// take the union, not an override. To re-enable from a user-scope disable
|
|
9
|
+
// while keeping it disabled elsewhere, remove the name from the user-scope
|
|
10
|
+
// list. The settings files are session-immutable: SkillRegistry filters
|
|
11
|
+
// on this list at startup, so toggle/remove takes effect on next launch.
|
|
12
|
+
import fs from 'node:fs/promises';
|
|
13
|
+
import path from 'node:path';
|
|
14
|
+
import { USER_XCODE_DIR, XCODE_DIR } from '../utils.js';
|
|
15
|
+
export function skillSettingsPath(scope) {
|
|
16
|
+
if (scope === 'user')
|
|
17
|
+
return path.join(USER_XCODE_DIR, 'settings.json');
|
|
18
|
+
return path.join(process.cwd(), XCODE_DIR, 'settings.local.json');
|
|
19
|
+
}
|
|
20
|
+
async function readSettings(scope) {
|
|
21
|
+
const file = skillSettingsPath(scope);
|
|
22
|
+
try {
|
|
23
|
+
const raw = await fs.readFile(file, 'utf-8');
|
|
24
|
+
const parsed = JSON.parse(raw);
|
|
25
|
+
if (!parsed || typeof parsed !== 'object')
|
|
26
|
+
return {};
|
|
27
|
+
const obj = parsed;
|
|
28
|
+
const list = Array.isArray(obj.disabledSkills)
|
|
29
|
+
? obj.disabledSkills.filter((s) => typeof s === 'string')
|
|
30
|
+
: [];
|
|
31
|
+
return { disabledSkills: list };
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
if (err.code === 'ENOENT')
|
|
35
|
+
return {};
|
|
36
|
+
// Malformed JSON: ignore + return empty so a broken settings file never
|
|
37
|
+
// blocks startup. The user can fix the file and re-launch.
|
|
38
|
+
return {};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async function writeSettings(scope, settings) {
|
|
42
|
+
const file = skillSettingsPath(scope);
|
|
43
|
+
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
44
|
+
// Read-modify-write: settings.json may carry unrelated fields later. We
|
|
45
|
+
// re-read the raw object, splice in the updated `disabledSkills` array,
|
|
46
|
+
// and write back so a future schema addition isn't clobbered.
|
|
47
|
+
let existing = {};
|
|
48
|
+
try {
|
|
49
|
+
const raw = await fs.readFile(file, 'utf-8');
|
|
50
|
+
const parsed = JSON.parse(raw);
|
|
51
|
+
if (parsed && typeof parsed === 'object')
|
|
52
|
+
existing = parsed;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// ignore — first write
|
|
56
|
+
}
|
|
57
|
+
const list = settings.disabledSkills ?? [];
|
|
58
|
+
if (list.length === 0) {
|
|
59
|
+
delete existing.disabledSkills;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
existing.disabledSkills = list;
|
|
63
|
+
}
|
|
64
|
+
await fs.writeFile(file, JSON.stringify(existing, null, 2) + '\n', 'utf-8');
|
|
65
|
+
}
|
|
66
|
+
export async function loadDisabledSkillsSet() {
|
|
67
|
+
const [u, p] = await Promise.all([readSettings('user'), readSettings('project')]);
|
|
68
|
+
const merged = new Set();
|
|
69
|
+
for (const name of u.disabledSkills ?? [])
|
|
70
|
+
merged.add(name);
|
|
71
|
+
for (const name of p.disabledSkills ?? [])
|
|
72
|
+
merged.add(name);
|
|
73
|
+
return merged;
|
|
74
|
+
}
|
|
75
|
+
/** Toggle a skill's disabled state in the given scope. `disable=true` adds
|
|
76
|
+
* the name; `disable=false` removes it. Returns the action that actually
|
|
77
|
+
* happened so the caller can render an accurate message
|
|
78
|
+
* ("already disabled" vs "disabled"). */
|
|
79
|
+
export async function setSkillDisabled(name, scope, disable) {
|
|
80
|
+
const current = await readSettings(scope);
|
|
81
|
+
const list = new Set(current.disabledSkills ?? []);
|
|
82
|
+
const had = list.has(name);
|
|
83
|
+
if (disable) {
|
|
84
|
+
if (had)
|
|
85
|
+
return 'noop';
|
|
86
|
+
list.add(name);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
if (!had)
|
|
90
|
+
return 'noop';
|
|
91
|
+
list.delete(name);
|
|
92
|
+
}
|
|
93
|
+
await writeSettings(scope, { disabledSkills: [...list].sort() });
|
|
94
|
+
return 'changed';
|
|
95
|
+
}
|
|
96
|
+
export async function getScopedDisabledSkills(scope) {
|
|
97
|
+
const s = await readSettings(scope);
|
|
98
|
+
return s.disabledSkills ?? [];
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/skills/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activate-skill.d.ts","sourceRoot":"","sources":["../../src/tools/activate-skill.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAG1D,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,aAAa;;WAmB9D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// @x-code-cli/core — activateSkill tool
|
|
2
|
+
//
|
|
3
|
+
// Injected into the tool registry only when a SkillRegistry is present
|
|
4
|
+
// (i.e. at least one SKILL.md was found). The model calls this when it
|
|
5
|
+
// decides the current task matches a skill's description; the tool
|
|
6
|
+
// returns the skill's Markdown body wrapped in XML tags, which the model
|
|
7
|
+
// then sees as a tool-result and follows as instructions.
|
|
8
|
+
//
|
|
9
|
+
// This mirrors Gemini CLI's activate_skill tool and Claude Code's inline
|
|
10
|
+
// SkillTool — the common pattern across all major competitors.
|
|
11
|
+
import { tool } from 'ai';
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { wrapActivatedSkill } from '../skills/registry.js';
|
|
14
|
+
export function createActivateSkillTool(registry) {
|
|
15
|
+
const nameList = registry.names().join(', ');
|
|
16
|
+
return tool({
|
|
17
|
+
description: `Activate a skill to inject its instructions into the conversation. Available skills: ${nameList}. Call this when the current task clearly matches one of those skill descriptions.`,
|
|
18
|
+
inputSchema: z.object({
|
|
19
|
+
name: z.string().describe('Name of the skill to activate'),
|
|
20
|
+
}),
|
|
21
|
+
execute: async ({ name }) => {
|
|
22
|
+
const skill = registry.get(name);
|
|
23
|
+
if (!skill) {
|
|
24
|
+
const available = registry.names();
|
|
25
|
+
return available.length > 0
|
|
26
|
+
? `Skill "${name}" not found. Available: ${available.join(', ')}`
|
|
27
|
+
: `Skill "${name}" not found. No skills are currently loaded.`;
|
|
28
|
+
}
|
|
29
|
+
return wrapActivatedSkill(skill);
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=activate-skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activate-skill.js","sourceRoot":"","sources":["../../src/tools/activate-skill.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,mEAAmE;AACnE,yEAAyE;AACzE,0DAA0D;AAC1D,EAAE;AACF,yEAAyE;AACzE,+DAA+D;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAA;AAEzB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE1D,MAAM,UAAU,uBAAuB,CAAC,QAAuB;IAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE5C,OAAO,IAAI,CAAC;QACV,WAAW,EAAE,wFAAwF,QAAQ,oFAAoF;QACjM,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SAC3D,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA;gBAClC,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC;oBACzB,CAAC,CAAC,UAAU,IAAI,2BAA2B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACjE,CAAC,CAAC,UAAU,IAAI,8CAA8C,CAAA;YAClE,CAAC;YACD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAA;QAClC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -96,7 +96,7 @@ export declare const toolRegistry: {
|
|
|
96
96
|
todoWrite: import("ai").Tool<{
|
|
97
97
|
todos: {
|
|
98
98
|
content?: string | undefined;
|
|
99
|
-
status?: "
|
|
99
|
+
status?: "completed" | "pending" | "in_progress" | undefined;
|
|
100
100
|
activeForm?: string | undefined;
|
|
101
101
|
}[];
|
|
102
102
|
}, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-utils.d.ts","sourceRoot":"","sources":["../../src/tools/shell-utils.ts"],"names":[],"mappings":"AAKA,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"shell-utils.d.ts","sourceRoot":"","sources":["../../src/tools/shell-utils.ts"],"names":[],"mappings":"AAKA,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA4DxD;AAqOD,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAI/C;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGlD"}
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
/** Split compound shell commands by pipe/chain operators for permission checking */
|
|
2
2
|
export function splitShellCommands(cmd) {
|
|
3
|
-
// Split by |, &&, ;, || — but not inside quotes
|
|
3
|
+
// Split by |, &&, ;, || — but not inside quotes or curly braces.
|
|
4
|
+
//
|
|
5
|
+
// Brace tracking exists to keep PowerShell hash literals / script blocks
|
|
6
|
+
// intact: `Select-Object @{N='Directory';E={$_.Name}},Count` has a `;`
|
|
7
|
+
// inside the hash that's a *field separator*, not a statement boundary.
|
|
8
|
+
// Without depth tracking the splitter chops the literal in half and the
|
|
9
|
+
// tail (`E={$_.Name}},Count`) reads as a separate command, which trips
|
|
10
|
+
// the read-only check and forces an unnecessary prompt. POSIX `{ … ; }`
|
|
11
|
+
// brace groups are caught by the same rule — acceptable side effect,
|
|
12
|
+
// since the contents are still scanned end-to-end by isDestructive.
|
|
4
13
|
const parts = [];
|
|
5
14
|
let current = '';
|
|
6
15
|
let inSingleQuote = false;
|
|
7
16
|
let inDoubleQuote = false;
|
|
17
|
+
let braceDepth = 0;
|
|
8
18
|
for (let i = 0; i < cmd.length; i++) {
|
|
9
19
|
const ch = cmd[i];
|
|
10
20
|
const next = cmd[i + 1];
|
|
@@ -17,7 +27,18 @@ export function splitShellCommands(cmd) {
|
|
|
17
27
|
current += ch;
|
|
18
28
|
}
|
|
19
29
|
else if (!inSingleQuote && !inDoubleQuote) {
|
|
20
|
-
if (ch === '
|
|
30
|
+
if (ch === '{') {
|
|
31
|
+
braceDepth++;
|
|
32
|
+
current += ch;
|
|
33
|
+
}
|
|
34
|
+
else if (ch === '}' && braceDepth > 0) {
|
|
35
|
+
braceDepth--;
|
|
36
|
+
current += ch;
|
|
37
|
+
}
|
|
38
|
+
else if (braceDepth > 0) {
|
|
39
|
+
current += ch;
|
|
40
|
+
}
|
|
41
|
+
else if (ch === '|' && next === '|') {
|
|
21
42
|
parts.push(current);
|
|
22
43
|
current = '';
|
|
23
44
|
i++; // skip next |
|
|
@@ -49,6 +70,7 @@ export function splitShellCommands(cmd) {
|
|
|
49
70
|
}
|
|
50
71
|
/** Unix/PowerShell commands that are safe to auto-allow */
|
|
51
72
|
const READ_ONLY_COMMANDS = [
|
|
73
|
+
// POSIX shell read-only utilities
|
|
52
74
|
'cd',
|
|
53
75
|
'ls',
|
|
54
76
|
'dir',
|
|
@@ -68,17 +90,81 @@ const READ_ONLY_COMMANDS = [
|
|
|
68
90
|
'printenv',
|
|
69
91
|
'find',
|
|
70
92
|
'tree',
|
|
71
|
-
|
|
93
|
+
'sort',
|
|
94
|
+
'uniq',
|
|
95
|
+
'grep',
|
|
96
|
+
'cut',
|
|
97
|
+
'nl',
|
|
98
|
+
'basename',
|
|
99
|
+
'dirname',
|
|
100
|
+
'realpath',
|
|
101
|
+
// PowerShell read-only cmdlets — matched case-insensitively below.
|
|
102
|
+
// Curated against the codex/opencode safelists: everything that only
|
|
103
|
+
// reads or only reshapes the object pipeline is here. Anything that
|
|
104
|
+
// can write a file, start a process, or evaluate user-supplied code
|
|
105
|
+
// (`Invoke-Expression`, `Set-*`, `New-*`, `Remove-*`, `Start-Process`,
|
|
106
|
+
// `Set-Content`, `Out-File`, …) is deliberately excluded.
|
|
72
107
|
'Get-ChildItem',
|
|
73
108
|
'Get-Location',
|
|
109
|
+
'Set-Location',
|
|
110
|
+
'Push-Location',
|
|
111
|
+
'Pop-Location',
|
|
74
112
|
'Get-Content',
|
|
113
|
+
'Get-Item',
|
|
114
|
+
'Get-ItemProperty',
|
|
115
|
+
'Get-Date',
|
|
116
|
+
'Get-Process',
|
|
117
|
+
'Get-Service',
|
|
118
|
+
'Get-Command',
|
|
119
|
+
'Get-Help',
|
|
120
|
+
'Get-Member',
|
|
121
|
+
'Get-Variable',
|
|
122
|
+
'Get-Alias',
|
|
123
|
+
'Get-PSDrive',
|
|
124
|
+
'Get-Module',
|
|
125
|
+
'Get-History',
|
|
126
|
+
'Get-CimInstance',
|
|
75
127
|
'Select-String',
|
|
128
|
+
'Select-Object',
|
|
129
|
+
'Sort-Object',
|
|
130
|
+
'Group-Object',
|
|
131
|
+
'Where-Object',
|
|
132
|
+
'ForEach-Object',
|
|
133
|
+
'Measure-Object',
|
|
134
|
+
'Compare-Object',
|
|
135
|
+
'Tee-Object',
|
|
136
|
+
'Format-Table',
|
|
137
|
+
'Format-List',
|
|
138
|
+
'Format-Wide',
|
|
139
|
+
'Format-Custom',
|
|
140
|
+
'Out-String',
|
|
141
|
+
'Out-Default',
|
|
142
|
+
'Out-Host',
|
|
143
|
+
'Write-Output',
|
|
144
|
+
'Write-Host',
|
|
145
|
+
'Write-Verbose',
|
|
146
|
+
'Write-Debug',
|
|
147
|
+
'Write-Information',
|
|
148
|
+
'ConvertTo-Json',
|
|
149
|
+
'ConvertFrom-Json',
|
|
150
|
+
'ConvertTo-Csv',
|
|
151
|
+
'ConvertFrom-Csv',
|
|
152
|
+
'ConvertTo-Xml',
|
|
153
|
+
'ConvertFrom-Xml',
|
|
154
|
+
'ConvertTo-Html',
|
|
155
|
+
'Resolve-Path',
|
|
156
|
+
'Split-Path',
|
|
157
|
+
'Join-Path',
|
|
158
|
+
'Convert-Path',
|
|
76
159
|
'Test-Path',
|
|
77
160
|
];
|
|
78
161
|
/** Git sub-commands that are read-only */
|
|
79
162
|
const READ_ONLY_GIT_SUBCOMMANDS = ['status', 'log', 'diff', 'branch', 'show', 'remote', 'tag', 'stash list', 'reflog'];
|
|
80
|
-
// Pre-compiled regexes for performance
|
|
81
|
-
|
|
163
|
+
// Pre-compiled regexes for performance. `/i` flag makes the match
|
|
164
|
+
// case-insensitive so `Get-ChildItem` / `get-childitem` / `GET-CHILDITEM`
|
|
165
|
+
// all hit — PowerShell itself is case-insensitive, and `dir` / `DIR`
|
|
166
|
+
// should both be allowed on Windows cmd shells.
|
|
167
|
+
const READ_ONLY_REGEX = new RegExp(`^\\s*(${READ_ONLY_COMMANDS.join('|')}|git\\s+(${READ_ONLY_GIT_SUBCOMMANDS.join('|')}))\\b`, 'i');
|
|
82
168
|
const DESTRUCTIVE_PATTERNS = [
|
|
83
169
|
// ── Filesystem destruction ──
|
|
84
170
|
/\brm\s+(-[a-z]*f|-[a-z]*r|--force|--recursive)/,
|
|
@@ -132,9 +218,74 @@ const DESTRUCTIVE_PATTERNS = [
|
|
|
132
218
|
/\bfdisk\b/,
|
|
133
219
|
/\bparted\b/,
|
|
134
220
|
];
|
|
221
|
+
// Lower-cased Verb-Noun subset of READ_ONLY_COMMANDS, pre-built for O(1)
|
|
222
|
+
// lookup inside isReadOnlyControlFlow. Anything without a `-` is a POSIX
|
|
223
|
+
// command and irrelevant to the PowerShell-control-flow heuristic.
|
|
224
|
+
const READ_ONLY_CMDLET_SET = new Set(READ_ONLY_COMMANDS.filter((c) => c.includes('-')).map((c) => c.toLowerCase()));
|
|
225
|
+
// PowerShell control-flow keywords that wrap a `{ … }` body. When a
|
|
226
|
+
// segment starts with one of these, the existing READ_ONLY_REGEX (which
|
|
227
|
+
// only checks the leading token) gives the wrong answer — `if`,
|
|
228
|
+
// `foreach`, `try` etc. aren't commands themselves; the work happens
|
|
229
|
+
// inside the braces. The codex / gemini-cli equivalents crack open the
|
|
230
|
+
// braces via a real PowerShell AST parser; we don't have one, so we use
|
|
231
|
+
// a Verb-Noun cmdlet scan guarded by the exec-invocation patterns below.
|
|
232
|
+
const PS_CONTROL_FLOW_RE = /^\s*(?:if|elseif|else|for|foreach|while|switch|try|catch|finally|do)\b/i;
|
|
233
|
+
// Patterns that, when present anywhere in the control-flow segment,
|
|
234
|
+
// force the readonly heuristic off:
|
|
235
|
+
//
|
|
236
|
+
// `& "C:\bin\foo.exe" arg` — call operator + path/string/variable
|
|
237
|
+
// `& $cmd` — same, via variable
|
|
238
|
+
// `. .\script.ps1` — dot sourcing
|
|
239
|
+
// `. $script` — dot sourcing via variable
|
|
240
|
+
//
|
|
241
|
+
// Both invoke arbitrary code that the Verb-Noun cmdlet scan can't see.
|
|
242
|
+
// The dot-sourcing pattern requires whitespace AFTER the dot so
|
|
243
|
+
// `.Property` access and `Get-Content .\file` don't false-positive.
|
|
244
|
+
const PS_CALL_OP_RE = /&\s*["'$./\\]/;
|
|
245
|
+
const PS_DOT_SOURCING_RE = /(?:^|[\s;{(])\.\s+\S/;
|
|
246
|
+
// Verb-Noun token shape (find + strict-validate). FIND matches anything
|
|
247
|
+
// with a `-`, including paths like `x-code-cli`; STRICT enforces Verb
|
|
248
|
+
// (initial-cap) and Noun(s) (initial-cap), which paths fail.
|
|
249
|
+
const VERB_NOUN_FIND_RE = /\b[A-Za-z]+(?:-[A-Za-z0-9]+)+\b/g;
|
|
250
|
+
const VERB_NOUN_STRICT_RE = /^[A-Z][a-z]+(?:-[A-Z][A-Za-z0-9]*)+$/;
|
|
251
|
+
/**
|
|
252
|
+
* For a PowerShell control-flow segment, return true iff every cmdlet
|
|
253
|
+
* inside it is in the readonly set AND nothing in the segment looks
|
|
254
|
+
* like an arbitrary-code invocation (`&` call operator, dot-sourcing).
|
|
255
|
+
*
|
|
256
|
+
* `if (Test-Path X) { Get-Content X }` → true (Test-Path, Get-Content both readonly)
|
|
257
|
+
* `if (Test-Path X) { Set-Content X foo }` → false (Set-Content not readonly)
|
|
258
|
+
* `if (Test-Path X) { & "evil.exe" }` → false (call operator)
|
|
259
|
+
* `if (Test-Path X) { . .\\evil.ps1 }` → false (dot sourcing)
|
|
260
|
+
* `if ($x -gt 0) { }` → false (no cmdlets found — conservative)
|
|
261
|
+
*
|
|
262
|
+
* Returns false (defer to the caller's "ask" path) for any non-control-flow
|
|
263
|
+
* segment, so the existing leading-token readonly check stays authoritative.
|
|
264
|
+
*/
|
|
265
|
+
function isReadOnlyControlFlow(cmd) {
|
|
266
|
+
if (!PS_CONTROL_FLOW_RE.test(cmd))
|
|
267
|
+
return false;
|
|
268
|
+
if (PS_CALL_OP_RE.test(cmd))
|
|
269
|
+
return false;
|
|
270
|
+
if (PS_DOT_SOURCING_RE.test(cmd))
|
|
271
|
+
return false;
|
|
272
|
+
let found = 0;
|
|
273
|
+
for (const match of cmd.matchAll(VERB_NOUN_FIND_RE)) {
|
|
274
|
+
const name = match[0];
|
|
275
|
+
if (!VERB_NOUN_STRICT_RE.test(name))
|
|
276
|
+
continue;
|
|
277
|
+
found++;
|
|
278
|
+
if (!READ_ONLY_CMDLET_SET.has(name.toLowerCase()))
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
return found > 0;
|
|
282
|
+
}
|
|
135
283
|
/** Check if a sub-command is read-only (safe to auto-allow) */
|
|
136
284
|
export function isReadOnly(cmd) {
|
|
137
|
-
|
|
285
|
+
const c = cmd.trim();
|
|
286
|
+
if (READ_ONLY_REGEX.test(c))
|
|
287
|
+
return true;
|
|
288
|
+
return isReadOnlyControlFlow(c);
|
|
138
289
|
}
|
|
139
290
|
/** Check if a sub-command is destructive (should be denied) */
|
|
140
291
|
export function isDestructive(cmd) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-utils.js","sourceRoot":"","sources":["../../src/tools/shell-utils.ts"],"names":[],"mappings":"AAOA,oFAAoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,
|
|
1
|
+
{"version":3,"file":"shell-utils.js","sourceRoot":"","sources":["../../src/tools/shell-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
export declare const todoWrite: import("ai").Tool<{
|
|
15
15
|
todos: {
|
|
16
16
|
content?: string | undefined;
|
|
17
|
-
status?: "
|
|
17
|
+
status?: "completed" | "pending" | "in_progress" | undefined;
|
|
18
18
|
activeForm?: string | undefined;
|
|
19
19
|
}[];
|
|
20
20
|
}, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-fetch.d.ts","sourceRoot":"","sources":["../../src/tools/web-fetch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web-fetch.d.ts","sourceRoot":"","sources":["../../src/tools/web-fetch.ts"],"names":[],"mappings":"AA8DA,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkB3D;AAyDD,eAAO,MAAM,QAAQ;;;UAyEnB,CAAA"}
|
package/dist/tools/web-fetch.js
CHANGED
|
@@ -6,6 +6,7 @@ import { tool } from 'ai';
|
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import { LruCache } from '../utils/lru-cache.js';
|
|
8
8
|
import { formatToolError } from '../utils/tool-errors.js';
|
|
9
|
+
import { VERSION } from '../version.js';
|
|
9
10
|
import { reportProgress } from './progress.js';
|
|
10
11
|
const FETCH_TIMEOUT_MS = 15_000;
|
|
11
12
|
// Markdown returned to the model. Bumped from 30 KB (which cut docs pages in half)
|
|
@@ -23,7 +24,7 @@ const CACHE_MAX_ENTRIES = 50;
|
|
|
23
24
|
const BROWSER_UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36';
|
|
24
25
|
// Used as Cloudflare fallback: aggressive bot rules often let honest CLI UAs through
|
|
25
26
|
// while blocking browser impersonators that fail TLS-fingerprint checks.
|
|
26
|
-
const FALLBACK_UA =
|
|
27
|
+
const FALLBACK_UA = `x-code-cli/${VERSION} (+https://github.com/woai3c/x-code-cli)`;
|
|
27
28
|
const YEAR = new Date().getFullYear();
|
|
28
29
|
// ── SSRF protection ──
|
|
29
30
|
// Reject URLs targeting internal/private networks. Mirrors Claude Code's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../src/tools/web-fetch.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,yCAAyC;AACzC,OAAO,eAAe,MAAM,UAAU,CAAA;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAA;AAEzB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAC/B,mFAAmF;AACnF,kFAAkF;AAClF,sEAAsE;AACtE,mFAAmF;AACnF,MAAM,iBAAiB,GAAG,OAAO,CAAA;AACjC,gFAAgF;AAChF,yEAAyE;AACzE,2DAA2D;AAC3D,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;AACvC,MAAM,cAAc,GAAG,IAAI,CAAA;AAC3B,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AACnC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAE5B,MAAM,UAAU,GACd,iHAAiH,CAAA;AACnH,qFAAqF;AACrF,yEAAyE;AACzE,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../src/tools/web-fetch.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import type { LanguageModel, ModelMessage } from 'ai';
|
|
|
2
2
|
import type { EditDiffPayload } from '../agent/diff.js';
|
|
3
3
|
import type { SubAgentRegistry } from '../agent/sub-agents/registry.js';
|
|
4
4
|
import type { SubAgentEvent } from '../agent/sub-agents/types.js';
|
|
5
|
+
import type { CommandRegistry } from '../commands/registry.js';
|
|
6
|
+
import type { HookBus } from '../hooks/bus.js';
|
|
7
|
+
import type { McpPermissionStore } from '../mcp/permissions.js';
|
|
8
|
+
import type { McpRegistry } from '../mcp/registry.js';
|
|
9
|
+
import type { PluginRegistry } from '../plugins/registry.js';
|
|
10
|
+
import type { SkillRegistry } from '../skills/registry.js';
|
|
5
11
|
export type PermissionLevel = 'always-allow' | 'ask' | 'deny';
|
|
6
12
|
/** Approval mode for the current session.
|
|
7
13
|
*
|
|
@@ -191,6 +197,45 @@ export interface AgentOptions {
|
|
|
191
197
|
allow?: string[];
|
|
192
198
|
deny?: string[];
|
|
193
199
|
};
|
|
200
|
+
/** Skill registry, populated at CLI startup by createSkillRegistry.
|
|
201
|
+
* Absent means no skills are configured — activateSkill tool is not
|
|
202
|
+
* registered and the `## Available Skills` section is omitted from
|
|
203
|
+
* the system prompt. */
|
|
204
|
+
skillRegistry?: SkillRegistry;
|
|
205
|
+
/** MCP registry, populated at CLI startup by loadMcpServers. Absent
|
|
206
|
+
* means MCP is disabled entirely (no servers configured) — agent
|
|
207
|
+
* loop short-circuits all MCP machinery. The registry itself is
|
|
208
|
+
* immutable for the session lifetime; `/mcp refresh` replaces the
|
|
209
|
+
* whole object on the next agentLoop entry. */
|
|
210
|
+
mcpRegistry?: McpRegistry;
|
|
211
|
+
/** Permission store for MCP tool calls. Created once per CLI process,
|
|
212
|
+
* caches the persisted always-allow list + session-scoped allows.
|
|
213
|
+
* Absent ⇒ tool-execution falls back to ask-every-time semantics. */
|
|
214
|
+
mcpPermissionStore?: McpPermissionStore;
|
|
215
|
+
/** Plugin registry, populated at CLI startup by loadAllPlugins. Holds
|
|
216
|
+
* every successfully-loaded plugin (enabled + disabled), exposed so
|
|
217
|
+
* the `/plugin ...` slash command family can list / inspect / toggle
|
|
218
|
+
* without re-scanning the cache. Plugin contributions (skills /
|
|
219
|
+
* agents / mcp) are already merged into their respective registries
|
|
220
|
+
* by the CLI startup wiring — this field is only the metadata
|
|
221
|
+
* surface for the slash command UI. Absent ⇒ plugins disabled
|
|
222
|
+
* (`--no-plugins`) or no plugins installed. */
|
|
223
|
+
pluginRegistry?: PluginRegistry;
|
|
224
|
+
/** Hook bus built from enabled plugins' `hooks` contributions. The
|
|
225
|
+
* agent loop emits SessionStart / UserPromptSubmit / TurnComplete /
|
|
226
|
+
* SessionEnd events through it; tool-execution adds PreToolUse /
|
|
227
|
+
* PostToolUse. Absent ⇒ no hook emission (the agent loop skips
|
|
228
|
+
* emit-sites entirely). Use `emptyHookBus()` for tests / sub-agents
|
|
229
|
+
* that should be allowed to call into the emit-sites but have no
|
|
230
|
+
* listeners. */
|
|
231
|
+
hookBus?: HookBus;
|
|
232
|
+
/** File-based slash command registry built from plugin-contributed
|
|
233
|
+
* `commands/` directories. The App.tsx default slash dispatcher
|
|
234
|
+
* checks this after the built-in command list and skill registry;
|
|
235
|
+
* matching a name here expands the command body (with $ARGUMENTS
|
|
236
|
+
* / ${CLAUDE_PLUGIN_ROOT} substitution) and submits as a model
|
|
237
|
+
* prompt. Absent ⇒ no plugin commands available. */
|
|
238
|
+
commandRegistry?: CommandRegistry;
|
|
194
239
|
}
|
|
195
240
|
/**
|
|
196
241
|
* Category taxonomy for auto memory entries. Categories describe the TYPE of
|
|
@@ -214,7 +259,7 @@ export interface KnowledgeFact {
|
|
|
214
259
|
* a fact to AutoMemory. Lets the UI render a "Remembered: …" line in
|
|
215
260
|
* scrollback so the user has visibility into otherwise-silent writes. */
|
|
216
261
|
export interface MemoryWriteNotice {
|
|
217
|
-
scope: 'project' | '
|
|
262
|
+
scope: 'project' | 'user';
|
|
218
263
|
category: KnowledgeCategory;
|
|
219
264
|
key: string;
|
|
220
265
|
fact: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,7 +1,28 @@
|
|
|
1
1
|
/** Project-local config directory name */
|
|
2
2
|
export declare const XCODE_DIR = ".x-code";
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/** User-scope config directory (~/.x-code). Frozen at module load — use
|
|
4
|
+
* {@link userXcodeDir} when you want the `X_CODE_HOME` override applied. */
|
|
5
|
+
export declare const USER_XCODE_DIR: string;
|
|
6
|
+
/** Resolve the user-scope config root at CALL TIME, honouring `X_CODE_HOME`.
|
|
7
|
+
* Use this in path helpers across the codebase so a single env var can
|
|
8
|
+
* reroute everything that lives under `~/.x-code/` for sandbox testing
|
|
9
|
+
* or per-user isolation. Falling back to the frozen {@link USER_XCODE_DIR}
|
|
10
|
+
* keeps the normal case allocation-free. */
|
|
11
|
+
export declare function userXcodeDir(): string;
|
|
12
|
+
/** Truncate `s` to at most `maxBytes` UTF-8 bytes, appending a marker noting
|
|
13
|
+
* how many bytes were dropped. The cheap `length * 4` upper bound short-
|
|
14
|
+
* circuits the common ASCII case (most debug content) without paying for
|
|
15
|
+
* Buffer.byteLength on every line.
|
|
16
|
+
*
|
|
17
|
+
* Slicing happens in BYTES, not JS chars: `s.slice(0, n)` would walk
|
|
18
|
+
* UTF-16 code units, so for CJK / emoji content it'd return ~3-4× the
|
|
19
|
+
* intended byte budget — debug lines mixing Chinese / Japanese / emoji
|
|
20
|
+
* would routinely overflow MAX_LINE_BYTES. We encode once, byte-slice,
|
|
21
|
+
* then re-decode (TextDecoder turns a cut-mid-codepoint tail into U+FFFD
|
|
22
|
+
* which the truncation marker absorbs).
|
|
23
|
+
*/
|
|
24
|
+
export declare function truncateForLog(s: string, maxBytes: number): string;
|
|
25
|
+
export declare function setPluginDebugMirror(enabled: boolean): void;
|
|
5
26
|
export declare function debugLog(tag: string, content: string): void;
|
|
6
27
|
/** Check if a file exists */
|
|
7
28
|
export declare function fileExists(filePath: string): Promise<boolean>;
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,0CAA0C;AAC1C,eAAO,MAAM,SAAS,YAAY,CAAA;AAElC
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,0CAA0C;AAC1C,eAAO,MAAM,SAAS,YAAY,CAAA;AAElC;6EAC6E;AAC7E,eAAO,MAAM,cAAc,QAAqC,CAAA;AAEhE;;;;6CAI6C;AAC7C,wBAAgB,YAAY,IAAI,MAAM,CAErC;AA8FD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQlE;AAWD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE3D;AASD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA+B3D;AAED,6BAA6B;AAC7B,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED,uDAAuD;AACvD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMpE;AAED,uDAAuD;AACvD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAO5F"}
|