anti-trace 0.1.4 → 0.1.6

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.
Files changed (63) hide show
  1. package/LICENSE +0 -1
  2. package/README.en.md +29 -1
  3. package/README.md +29 -1
  4. package/dist/agent/agent.d.ts +1 -1
  5. package/dist/agent/agent.js +2 -2
  6. package/dist/agent/agent.js.map +1 -1
  7. package/dist/agent/loop.js +9 -0
  8. package/dist/agent/loop.js.map +1 -1
  9. package/dist/cli/commands/command-registry.d.ts +4 -0
  10. package/dist/cli/commands/command-registry.js +1 -0
  11. package/dist/cli/commands/command-registry.js.map +1 -1
  12. package/dist/cli/locale.js +7 -0
  13. package/dist/cli/locale.js.map +1 -1
  14. package/dist/cli/permissions/permission-policy.d.ts +8 -1
  15. package/dist/cli/permissions/permission-policy.js +12 -4
  16. package/dist/cli/permissions/permission-policy.js.map +1 -1
  17. package/dist/cli/repl/repl-controller.d.ts +4 -2
  18. package/dist/cli/repl/repl-controller.js +60 -5
  19. package/dist/cli/repl/repl-controller.js.map +1 -1
  20. package/dist/harness/harness.d.ts +13 -0
  21. package/dist/harness/harness.js +80 -11
  22. package/dist/harness/harness.js.map +1 -1
  23. package/dist/harness/prompt.d.ts +2 -0
  24. package/dist/harness/prompt.js +11 -1
  25. package/dist/harness/prompt.js.map +1 -1
  26. package/dist/harness/session.d.ts +2 -1
  27. package/dist/harness/session.js +5 -2
  28. package/dist/harness/session.js.map +1 -1
  29. package/dist/harness/skills/loader.d.ts +9 -0
  30. package/dist/harness/skills/loader.js +144 -0
  31. package/dist/harness/skills/loader.js.map +1 -0
  32. package/dist/harness/skills/registry.d.ts +11 -0
  33. package/dist/harness/skills/registry.js +15 -0
  34. package/dist/harness/skills/registry.js.map +1 -0
  35. package/dist/harness/skills/runtime.d.ts +20 -0
  36. package/dist/harness/skills/runtime.js +139 -0
  37. package/dist/harness/skills/runtime.js.map +1 -0
  38. package/dist/harness/skills/types.d.ts +25 -0
  39. package/dist/harness/skills/types.js +2 -0
  40. package/dist/harness/skills/types.js.map +1 -0
  41. package/dist/harness/tools/skill.d.ts +9 -0
  42. package/dist/harness/tools/skill.js +16 -0
  43. package/dist/harness/tools/skill.js.map +1 -0
  44. package/dist/index.d.ts +4 -0
  45. package/dist/index.js +3 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/storage/app-paths.d.ts +1 -0
  48. package/dist/storage/app-paths.js +1 -1
  49. package/dist/storage/app-paths.js.map +1 -1
  50. package/dist/tui/commands/CommandDialog.js +3 -3
  51. package/dist/tui/commands/CommandDialog.js.map +1 -1
  52. package/dist/tui/commands/command-dialog-controller.d.ts +12 -0
  53. package/dist/tui/commands/command-dialog-controller.js +22 -4
  54. package/dist/tui/commands/command-dialog-controller.js.map +1 -1
  55. package/dist/tui/messages/TranscriptView.js +3 -0
  56. package/dist/tui/messages/TranscriptView.js.map +1 -1
  57. package/dist/tui/tools/SkillToolView.d.ts +6 -0
  58. package/dist/tui/tools/SkillToolView.js +11 -0
  59. package/dist/tui/tools/SkillToolView.js.map +1 -0
  60. package/dist/tui/transcript.js +1 -1
  61. package/dist/tui/transcript.js.map +1 -1
  62. package/dist/types.d.ts +5 -0
  63. package/package.json +4 -2
@@ -0,0 +1,139 @@
1
+ import { createHash } from "node:crypto";
2
+ import { SkillRegistry } from "./registry.js";
3
+ export function splitSkillArguments(input) {
4
+ const result = [];
5
+ let current = "", quote = "", started = false;
6
+ for (let i = 0; i < input.length; i++) {
7
+ const char = input[i];
8
+ if (char === "\\" && (input[i + 1] === quote || input[i + 1] === "\\") && quote === '"') {
9
+ current += input[++i];
10
+ started = true;
11
+ }
12
+ else if (quote) {
13
+ if (char === quote)
14
+ quote = "";
15
+ else
16
+ current += char;
17
+ }
18
+ else if ((char === '"' || char === "'") && !started) {
19
+ quote = char;
20
+ started = true;
21
+ }
22
+ else if (/\s/u.test(char)) {
23
+ if (started) {
24
+ result.push(current);
25
+ current = "";
26
+ started = false;
27
+ }
28
+ }
29
+ else {
30
+ current += char;
31
+ started = true;
32
+ }
33
+ }
34
+ if (quote)
35
+ throw new Error("Skill arguments contain an unclosed quote");
36
+ if (started)
37
+ result.push(current);
38
+ return result;
39
+ }
40
+ /** Definitions, model disclosure and per-session invocation snapshots have separate lifetimes. */
41
+ export class SkillRuntime {
42
+ registry;
43
+ invoked = new Map();
44
+ grants = new Set();
45
+ constructor(registry) {
46
+ this.registry = registry;
47
+ }
48
+ beginTurn() { this.grants.clear(); }
49
+ reset() { this.invoked.clear(); this.grants.clear(); }
50
+ getAllowedTools() { return [...this.grants]; }
51
+ getPermissionTools(name) { return this.registry.find(name)?.allowedTools; }
52
+ prepare(name, args, invoker, sessionId, availableTools) {
53
+ const skill = this.registry.find(name);
54
+ if (!skill)
55
+ throw new Error(`Unknown skill: ${name}`);
56
+ if (invoker === "model" && skill.disableModelInvocation)
57
+ throw new Error(`Skill ${name} does not allow model invocation`);
58
+ if (invoker === "user" && !skill.userInvocable)
59
+ throw new Error(`Skill ${name} can only be invoked by the model`);
60
+ for (const tool of skill.allowedTools)
61
+ if (!availableTools.includes(tool))
62
+ throw new Error(`Skill ${name} requires unavailable tool: ${tool}`);
63
+ let positional;
64
+ const positions = () => positional ??= splitSkillArguments(args);
65
+ let consumed = false;
66
+ const names = new Set(skill.argumentNames);
67
+ const body = skill.body.replace(/\\?\$(?:\{(CLAUDE_SKILL_DIR|CLAUDE_SESSION_ID)\}|ARGUMENTS(?:\[(\d+)\])?|(\d+)|([a-zA-Z_][\w-]*))/gu, (token, variable, bracketIndex, index, named) => {
68
+ if (token.startsWith("\\"))
69
+ return token.slice(1);
70
+ if (variable)
71
+ return variable === "CLAUDE_SKILL_DIR" ? skill.directory.replace(/\\/g, "/") : sessionId;
72
+ if (named) {
73
+ if (!names.has(named))
74
+ return token;
75
+ consumed = true;
76
+ return positions()[skill.argumentNames.indexOf(named)] ?? "";
77
+ }
78
+ if (bracketIndex !== undefined || index !== undefined) {
79
+ const value = positions()[Number(bracketIndex ?? index)];
80
+ if (value === undefined)
81
+ return token;
82
+ consumed = true;
83
+ return value;
84
+ }
85
+ consumed = true;
86
+ return args;
87
+ });
88
+ const content = `Skill: ${skill.name}\nBase directory for this skill: ${skill.directory}\nResolve relative resource paths against this directory.\n\n${body}${args && !consumed ? `\n\nARGUMENTS: ${args}` : ""}`;
89
+ return { role: "user", isMeta: true, timestamp: Date.now(), content: [{ type: "text", text: content }],
90
+ metadata: { kind: "skill", name: skill.name, path: skill.path, source: skill.source, args, allowedTools: [...skill.allowedTools] } };
91
+ }
92
+ /** Only committed instruction messages grant tools; restored history never re-grants permissions. */
93
+ accept(message, grant = true) {
94
+ if (message.role !== "user" || !message.isMeta || message.metadata?.kind !== "skill" || typeof message.metadata.name !== "string")
95
+ return;
96
+ this.invoked.set(message.metadata.name, structuredClone(message));
97
+ if (grant && Array.isArray(message.metadata.allowedTools))
98
+ for (const tool of message.metadata.allowedTools)
99
+ if (typeof tool === "string")
100
+ this.grants.add(tool);
101
+ }
102
+ restore(messages) { this.reset(); for (const message of messages)
103
+ this.accept(message, false); }
104
+ catalog(messages, contextWindow) {
105
+ const skills = this.registry.modelSkills();
106
+ const entries = skills.map(skill => ({ name: skill.name, description: skill.description.slice(0, 250) }));
107
+ const version = createHash("sha256").update(JSON.stringify(entries)).digest("hex");
108
+ const previous = [...messages].reverse().find(message => message.role === "user" && message.isMeta && message.metadata?.kind === "skill_catalog");
109
+ if (previous?.role === "user" && previous.metadata?.version === version)
110
+ return;
111
+ if (!entries.length && !previous)
112
+ return;
113
+ const budget = Math.max(500, Math.floor(contextWindow * 0.04));
114
+ const nameCost = entries.reduce((total, entry) => total + entry.name.length + 4, 0);
115
+ const descriptionLimit = Math.max(0, Math.min(250, Math.floor((budget - nameCost) / Math.max(1, entries.length))));
116
+ const listing = entries.map(entry => `- ${entry.name}${descriptionLimit ? `: ${entry.description.slice(0, descriptionLimit)}` : ""}`).join("\n");
117
+ return { role: "user", isMeta: true, timestamp: Date.now(), metadata: { kind: "skill_catalog", version },
118
+ content: [{ type: "text", text: `Available skills for the skill tool (this list replaces earlier skill catalogs):\n${listing || "(none)"}\nLoad a matching skill before doing its task. Only the selected skill's instructions are loaded on invocation.` }] };
119
+ }
120
+ retainedMessages(kept, tokenBudget) {
121
+ const present = new Set(kept.filter(message => message.role === "user" && message.metadata?.kind === "skill")
122
+ .map(message => message.role === "user" ? `${message.metadata?.name}:${message.timestamp}` : ""));
123
+ const result = [];
124
+ let remaining = Math.max(0, Math.floor(tokenBudget * 4));
125
+ for (const message of [...this.invoked.values()].sort((a, b) => b.timestamp - a.timestamp)) {
126
+ if (present.has(`${message.metadata?.name}:${message.timestamp}`))
127
+ continue;
128
+ if (remaining < 200)
129
+ break;
130
+ const original = message.content.filter(block => block.type === "text").map(block => block.text).join("\n");
131
+ const limit = Math.min(20_000, remaining);
132
+ const text = original.length <= limit ? original : `${original.slice(0, limit - 65)}\n[Skill instructions truncated to fit the context budget.]`;
133
+ result.push({ ...structuredClone(message), content: [{ type: "text", text }] });
134
+ remaining -= text.length;
135
+ }
136
+ return result;
137
+ }
138
+ }
139
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/harness/skills/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export interface SkillDefinition {
2
+ name: string;
3
+ description: string;
4
+ path: string;
5
+ directory: string;
6
+ source: "project" | "user";
7
+ body: string;
8
+ argumentHint?: string;
9
+ argumentNames: string[];
10
+ userInvocable: boolean;
11
+ disableModelInvocation: boolean;
12
+ allowedTools: string[];
13
+ }
14
+ export interface SkillDiagnostic {
15
+ path: string;
16
+ message: string;
17
+ }
18
+ export interface SkillSnapshot {
19
+ skills: readonly SkillDefinition[];
20
+ diagnostics: readonly SkillDiagnostic[];
21
+ }
22
+ export interface SkillDirectory {
23
+ path: string;
24
+ source: SkillDefinition["source"];
25
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/harness/skills/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { Type } from "typebox";
2
+ import type { AgentTool } from "../../types.ts";
3
+ import type { SkillRuntime } from "../skills/runtime.ts";
4
+ declare const skillSchema: Type.TObject<{
5
+ skill: Type.TString;
6
+ args: Type.TOptional<Type.TString>;
7
+ }>;
8
+ export declare function createSkillTool(runtime: SkillRuntime, sessionId: () => string, availableTools: () => string[]): AgentTool<typeof skillSchema>;
9
+ export {};
@@ -0,0 +1,16 @@
1
+ import { Type } from "typebox";
2
+ const skillSchema = Type.Object({ skill: Type.String({ description: "Name from the available skills catalog" }),
3
+ args: Type.Optional(Type.String({ description: "Arguments for the selected skill" })) });
4
+ export function createSkillTool(runtime, sessionId, availableTools) {
5
+ return { name: "skill", label: "skill", parameters: skillSchema,
6
+ description: "Load the full instructions of one named skill into this conversation. Consult the available skills catalog and invoke a matching skill before performing its task. Then follow its instructions using the existing tools. This tool does not list or execute all skills.",
7
+ async execute(_id, { skill, args = "" }, signal) {
8
+ signal?.throwIfAborted();
9
+ const message = runtime.prepare(skill, args, "model", sessionId(), availableTools());
10
+ signal?.throwIfAborted();
11
+ return { content: [{ type: "text", text: `Loaded skill: ${skill}` }],
12
+ details: { skill, args, path: message.metadata?.path, allowedTools: message.metadata?.allowedTools }, newMessages: [message] };
13
+ },
14
+ };
15
+ }
16
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/harness/tools/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAI/B,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAAC;IAC9G,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAE1F,MAAM,UAAU,eAAe,CAAC,OAAqB,EAAE,SAAuB,EAAE,cAA8B;IAC7G,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW;QAC9D,WAAW,EAAE,0QAA0Q;QACvR,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,MAAM;YAC9C,MAAM,EAAE,cAAc,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YACrF,MAAM,EAAE,cAAc,EAAE,CAAC;YACzB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,KAAK,EAAE,EAAE,CAAC;gBACnE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACjI,CAAC;KACD,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -17,5 +17,9 @@ export { detectShellEnvironment, type ShellEnvironment, type PowerShellConfig }
17
17
  export { createEditTool } from "./harness/tools/edit.ts";
18
18
  export { createReadTool } from "./harness/tools/read.ts";
19
19
  export { createWriteTool } from "./harness/tools/write.ts";
20
+ export { createSkillTool } from "./harness/tools/skill.ts";
21
+ export { SkillRuntime } from "./harness/skills/runtime.ts";
22
+ export { SkillRegistry } from "./harness/skills/registry.ts";
23
+ export type { SkillDefinition, SkillSnapshot, SkillDiagnostic } from "./harness/skills/types.ts";
20
24
  export { buildSystemPrompt, type BuildSystemPromptOptions } from "./harness/prompt.ts";
21
25
  export type * from "./types.ts";
package/dist/index.js CHANGED
@@ -16,5 +16,8 @@ export { detectShellEnvironment } from "./harness/shell-environment.js";
16
16
  export { createEditTool } from "./harness/tools/edit.js";
17
17
  export { createReadTool } from "./harness/tools/read.js";
18
18
  export { createWriteTool } from "./harness/tools/write.js";
19
+ export { createSkillTool } from "./harness/tools/skill.js";
20
+ export { SkillRuntime } from "./harness/skills/runtime.js";
21
+ export { SkillRegistry } from "./harness/skills/registry.js";
19
22
  export { buildSystemPrompt } from "./harness/prompt.js";
20
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAsC,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAkD,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAqD,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAgD,MAAM,gCAAgC,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAiC,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAsC,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAkD,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAqD,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAgD,MAAM,gCAAgC,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAiC,MAAM,qBAAqB,CAAC"}
@@ -7,6 +7,7 @@ export interface AppPaths {
7
7
  profileId: string;
8
8
  profileRoot: string;
9
9
  configsDir: string;
10
+ userSkillsDir: string;
10
11
  preferencesFile: string;
11
12
  defaultSelectionFile: string;
12
13
  projectId: string;
@@ -31,7 +31,7 @@ export function getAppPaths(options) {
31
31
  const projectRoot = join(profileRoot, "projects", projectId);
32
32
  return {
33
33
  appRoot, profileId, profileRoot, cwd, projectId, projectRoot,
34
- configsDir: join(profileRoot, "configs"), preferencesFile: join(appRoot, "preferences.json"),
34
+ configsDir: join(profileRoot, "configs"), userSkillsDir: join(appRoot, "skills"), preferencesFile: join(appRoot, "preferences.json"),
35
35
  defaultSelectionFile: join(profileRoot, "default-model.json"),
36
36
  projectInfoFile: join(projectRoot, "project.json"), projectSelectionFile: join(projectRoot, "last-model.json"),
37
37
  sessionsDir: join(projectRoot, "sessions"), toolResultsDir: join(projectRoot, "tool-results"),
@@ -1 +1 @@
1
- {"version":3,"file":"app-paths.js","sourceRoot":"","sources":["../../src/storage/app-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmB1C,0GAA0G;AAC1G,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC;QAAC,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAAC,CAAC;IAC7C,OAAO,KAAK,EAAE,CAAC;QAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;QAAC,OAAO,QAAQ,CAAC;IAAC,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IAC1C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,WAAW,CAAC,OAAyC;IACpE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC;IAC/C,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,uCAAuC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/G,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;IAC9F,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAC7D,OAAO;QACN,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW;QAC5D,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC;QAC5F,oBAAoB,EAAE,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC;QAC7D,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC;QAC9G,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC;KAC7F,CAAC;AACH,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,sBAAsB,CAAC,KAAe;IACrD,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC;QAAC,aAAa,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAAC,CAAC;IAC1I,OAAO,KAAK,EAAE,CAAC;QAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;IAAC,CAAC;AACvF,CAAC"}
1
+ {"version":3,"file":"app-paths.js","sourceRoot":"","sources":["../../src/storage/app-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoB1C,0GAA0G;AAC1G,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC;QAAC,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAAC,CAAC;IAC7C,OAAO,KAAK,EAAE,CAAC;QAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;QAAC,OAAO,QAAQ,CAAC;IAAC,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IAC1C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,WAAW,CAAC,OAAyC;IACpE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC;IAC/C,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,uCAAuC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/G,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;IAC9F,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAC7D,OAAO;QACN,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW;QAC5D,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC;QACpI,oBAAoB,EAAE,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC;QAC7D,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC;QAC9G,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC;KAC7F,CAAC;AACH,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,sBAAsB,CAAC,KAAe;IACrD,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC;QAAC,aAAa,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAAC,CAAC;IAC1I,OAAO,KAAK,EAAE,CAAC;QAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;IAAC,CAAC;AACvF,CAAC"}
@@ -10,12 +10,12 @@ export function CommandDialog({ controller, columns, rows }) {
10
10
  if (!state)
11
11
  return null;
12
12
  const width = Math.max(1, columns - 4), count = Math.max(1, rows - (state.error ? 10 : 8));
13
- const choices = state.kind === "picker" ? state.choices : state.kind === "field" ? (state.field.options ?? []).map(id => ({ id, label: id, current: id === state.field.value }))
13
+ const choices = state.kind === "picker" ? state.choices : state.kind === "input" ? [] : state.kind === "field" ? (state.field.options ?? []).map(id => ({ id, label: id, current: id === state.field.value }))
14
14
  : [...state.fields.map(field => ({ id: field.key, label: field.label, description: field.secret ? field.value ? "••••••••" : t(field.placeholder ?? "未填写") : field.value ? field.options ? t(field.value) : field.value : t(field.placeholder ?? "未填写"), descriptionLiteral: true })), { id: ":save", label: "保存并使用此配置" }];
15
15
  const start = Math.max(0, Math.min(state.selected - Math.floor(count / 2), choices.length - count));
16
16
  const horizontal = state.kind === "picker" && state.horizontal && columns >= 54;
17
- return _jsxs(ThemedBox, { flexDirection: "column", borderStyle: "round", color: "accent", width: columns, paddingX: 1, flexShrink: 0, children: [_jsx(ThemedText, { color: "brand", bold: true, wrap: "truncate-end", children: t(state.title) }), state.description ? _jsx(ThemedText, { color: "muted", wrap: "truncate-end", children: truncateText(t(state.description), width) }) : null, _jsxs(Box, { flexDirection: "column", marginY: 1, children: [state.kind === "field" && !state.field.options ? _jsx(BaseTextInput, { controller: controller.editor, mask: state.field.secret, maxRows: 1 })
17
+ return _jsxs(ThemedBox, { flexDirection: "column", borderStyle: "round", color: "accent", width: columns, paddingX: 1, flexShrink: 0, children: [_jsx(ThemedText, { color: "brand", bold: true, wrap: "truncate-end", children: t(state.title) }), state.description ? _jsx(ThemedText, { color: "muted", wrap: "truncate-end", children: truncateText(t(state.description), width) }) : null, _jsxs(Box, { flexDirection: "column", marginY: 1, children: [(state.kind === "input" || state.kind === "field") && !state.field.options ? _jsx(BaseTextInput, { controller: controller.editor, mask: state.field.secret, maxRows: 1 })
18
18
  : horizontal ? _jsx(Box, { gap: 2, children: choices.map((item, i) => _jsxs(ThemedText, { color: i === state.selected ? "accent" : "muted", bold: i === state.selected, children: [i === state.selected ? "❯ " : " ", item.literal ? item.label : t(item.label), item.current ? " ✓" : ""] }, item.id)) })
19
- : choices.slice(start, start + count).map((item, i) => _jsxs(ThemedText, { color: start + i === state.selected ? "accent" : undefined, wrap: "truncate-end", children: [start + i === state.selected ? "❯ " : " ", truncateText(`${item.literal ? item.label : t(item.label)}${item.current ? " ✓" : ""}${item.description ? ` · ${item.descriptionLiteral ? item.description : t(item.description)}` : ""}`, Math.max(1, width - 2))] }, item.id)), !choices.length && state.kind !== "field" ? _jsx(ThemedText, { color: "muted", children: t("暂无可选项") }) : null] }), state.error ? _jsx(ThemedText, { color: "error", children: truncateText(t(state.error), width * 2) }) : null, _jsx(ThemedText, { color: "muted", wrap: "truncate-end", children: state.kind === "form" ? t("Enter 编辑 · Ctrl+S 保存 · Esc 返回") : state.kind === "field" && !state.field.options ? t("Enter 确认 · Esc 返回") : `${horizontal ? "←→ / ↑↓" : "↑↓"} ${t("选择")} · Enter ${t("确认")} · Esc ${t("返回")}` }), choices.length > count && !horizontal ? _jsxs(ThemedText, { color: "dim", children: [state.selected + 1, "/", choices.length] }) : null] });
19
+ : choices.slice(start, start + count).map((item, i) => _jsxs(ThemedText, { color: start + i === state.selected ? "accent" : undefined, wrap: "truncate-end", children: [start + i === state.selected ? "❯ " : " ", truncateText(`${item.literal ? item.label : t(item.label)}${item.current ? " ✓" : ""}${item.description ? ` · ${item.descriptionLiteral ? item.description : t(item.description)}` : ""}`, Math.max(1, width - 2))] }, item.id)), !choices.length && state.kind !== "field" && state.kind !== "input" ? _jsx(ThemedText, { color: "muted", children: t("暂无可选项") }) : null] }), state.error ? _jsx(ThemedText, { color: "error", children: truncateText(t(state.error), width * 2) }) : null, _jsx(ThemedText, { color: "muted", wrap: "truncate-end", children: state.kind === "form" ? t("Enter 编辑 · Ctrl+S 保存 · Esc 返回") : (state.kind === "input" || state.kind === "field") && !state.field.options ? t("Enter 确认 · Esc 返回") : `${horizontal ? "←→ / ↑↓" : "↑↓"} ${t("选择")} · Enter ${t("确认")} · Esc ${t("返回")}` }), choices.length > count && !horizontal ? _jsxs(ThemedText, { color: "dim", children: [state.selected + 1, "/", choices.length] }) : null] });
20
20
  }
21
21
  //# sourceMappingURL=CommandDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandDialog.js","sourceRoot":"","sources":["../../../src/tui/commands/CommandDialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommandDialog.js","sourceRoot":"","sources":["../../../src/tui/commands/CommandDialog.tsx"],"names":[],"mappings":"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"}
@@ -32,6 +32,10 @@ export type CommandDialogState = (DialogBase & {
32
32
  selected: number;
33
33
  horizontal: boolean;
34
34
  }) | ConfigFormState | (DialogBase & {
35
+ kind: "input";
36
+ field: ConfigField;
37
+ selected: number;
38
+ }) | (DialogBase & {
35
39
  kind: "field";
36
40
  field: ConfigField;
37
41
  selected: number;
@@ -44,6 +48,7 @@ export declare class CommandDialogController {
44
48
  private acceptChoice?;
45
49
  private saveForm?;
46
50
  private goBack?;
51
+ private acceptInput?;
47
52
  readonly editor: TextInputController;
48
53
  readonly target: InputTarget;
49
54
  getSnapshot: () => CommandDialogState | null;
@@ -65,6 +70,13 @@ export declare class CommandDialogController {
65
70
  onBack: () => void;
66
71
  }): void;
67
72
  setColumns(columns: number): void;
73
+ openInput(options: {
74
+ title: string;
75
+ description?: string;
76
+ placeholder?: string;
77
+ onAccept: (value: string) => void;
78
+ onBack?: () => void;
79
+ }): void;
68
80
  showError(error: unknown): void;
69
81
  close(): void;
70
82
  cancel(): void;
@@ -7,14 +7,15 @@ export class CommandDialogController {
7
7
  acceptChoice;
8
8
  saveForm;
9
9
  goBack;
10
+ acceptInput;
10
11
  editor = new TextInputController({ availableColumns: 60, multiline: false });
11
12
  target = { id: Symbol("command-dialog"), context: "CommandDialog", actions: {
12
- ...Object.fromEntries(Object.keys(this.editor.target.actions ?? {}).map(action => [action, () => { if (this.state?.kind === "field" && !this.state.field.options)
13
+ ...Object.fromEntries(Object.keys(this.editor.target.actions ?? {}).map(action => [action, () => { if ((this.state?.kind === "field" || this.state?.kind === "input") && !this.state.field.options)
13
14
  this.editor.handleAction(action); }])),
14
15
  "dialog:previous": () => this.move(-1), "dialog:next": () => this.move(1),
15
16
  "dialog:left": () => this.adjust(-1), "dialog:right": () => this.adjust(1),
16
17
  "dialog:accept": () => this.accept(), "dialog:cancel": () => this.cancel(), "dialog:save": () => this.save(),
17
- }, onInput: event => { if (this.state?.kind === "field" && !this.state.field.options)
18
+ }, onInput: event => { if ((this.state?.kind === "field" || this.state?.kind === "input") && !this.state.field.options)
18
19
  this.editor.handleInput(event); } };
19
20
  getSnapshot = () => this.state;
20
21
  subscribe = (listener) => { this.listeners.add(listener); return () => { this.listeners.delete(listener); }; };
@@ -34,9 +35,17 @@ export class CommandDialogController {
34
35
  this.set({ kind: "form", title: options.title, description: options.description, fields: options.fields, selected: 0 });
35
36
  }
36
37
  setColumns(columns) { this.editor.setAvailableColumns(Math.max(1, columns - 7)); }
38
+ openInput(options) {
39
+ this.clearEditor();
40
+ this.acceptInput = options.onAccept;
41
+ this.acceptChoice = undefined;
42
+ this.saveForm = undefined;
43
+ this.goBack = options.onBack;
44
+ this.set({ kind: "input", selected: 0, title: options.title, description: options.description, field: { key: "value", label: options.title, value: "", placeholder: options.placeholder } });
45
+ }
37
46
  showError(error) { if (this.state)
38
47
  this.set({ ...this.state, error: error instanceof Error ? error.message : String(error) }); }
39
- close() { this.state = null; this.acceptChoice = undefined; this.saveForm = undefined; this.goBack = undefined; this.clearEditor(); this.publish(); }
48
+ close() { this.state = null; this.acceptChoice = undefined; this.acceptInput = undefined; this.saveForm = undefined; this.goBack = undefined; this.clearEditor(); this.publish(); }
40
49
  cancel() {
41
50
  if (this.state?.kind === "field") {
42
51
  const form = this.state.form;
@@ -62,7 +71,7 @@ export class CommandDialogController {
62
71
  this.move(direction);
63
72
  return;
64
73
  }
65
- if (this.state?.kind !== "field")
74
+ if (this.state?.kind !== "field" && this.state?.kind !== "input")
66
75
  return;
67
76
  if (this.state.field.options)
68
77
  this.move(direction);
@@ -72,6 +81,15 @@ export class CommandDialogController {
72
81
  accept() {
73
82
  if (!this.state || this.editor.pasteHandler.isPending())
74
83
  return;
84
+ if (this.state.kind === "input") {
85
+ try {
86
+ this.acceptInput?.(this.editor.getState().text);
87
+ }
88
+ catch (error) {
89
+ this.showError(error);
90
+ }
91
+ return;
92
+ }
75
93
  if (this.state.kind === "field") {
76
94
  const { field, form, selected } = this.state, value = field.options ? field.options[selected] : this.editor.getState().text;
77
95
  this.clearEditor();
@@ -1 +1 @@
1
- {"version":3,"file":"command-dialog-controller.js","sourceRoot":"","sources":["../../../src/tui/commands/command-dialog-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-dialog-controller.js","sourceRoot":"","sources":["../../../src/tui/commands/command-dialog-controller.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import { ReadToolView } from "../tools/ReadToolView.js";
9
9
  import { EditToolView } from "../tools/EditToolView.js";
10
10
  import { WriteToolView } from "../tools/WriteToolView.js";
11
11
  import { BashToolView } from "../tools/BashToolView.js";
12
+ import { SkillToolView } from "../tools/SkillToolView.js";
12
13
  import { GroupedToolUseView } from "../tools/GroupedToolUseView.js";
13
14
  import { ToolUseCard } from "../tools/ToolUseCard.js";
14
15
  import { toolText } from "../tools/tool-result.js";
@@ -48,6 +49,8 @@ export function TranscriptItemView({ item, expanded, thinkingDisplay, columns, l
48
49
  const props = { item, expanded, columns, live };
49
50
  if (item.name === "read")
50
51
  return _jsx(ReadToolView, { ...props });
52
+ if (item.name === "skill")
53
+ return _jsx(SkillToolView, { ...props });
51
54
  if (item.name === "edit")
52
55
  return _jsx(EditToolView, { ...props });
53
56
  if (item.name === "write")
@@ -1 +1 @@
1
- {"version":3,"file":"TranscriptView.js","sourceRoot":"","sources":["../../../src/tui/messages/TranscriptView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TranscriptView.js","sourceRoot":"","sources":["../../../src/tui/messages/TranscriptView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ToolUseItem } from "../transcript.ts";
2
+ export declare function SkillToolView({ item, expanded, columns }: {
3
+ item: ToolUseItem;
4
+ expanded: boolean;
5
+ columns: number;
6
+ }): import("react").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Text } from "ink";
3
+ import { ToolUseCard } from "./ToolUseCard.js";
4
+ import { MessageResponse } from "../messages/MessageResponse.js";
5
+ import { toolDetails, toolText } from "./tool-result.js";
6
+ import { displayText } from "../utils/text.js";
7
+ export function SkillToolView({ item, expanded, columns }) {
8
+ const details = toolDetails(item);
9
+ return _jsx(ToolUseCard, { item: item, label: "Skill", target: String(item.args.skill ?? ""), columns: columns, children: item.result ? _jsxs(MessageResponse, { columns: Math.max(1, columns - 4), children: [_jsx(Text, { children: toolText(item) }), expanded && item.status !== "error" ? _jsxs(_Fragment, { children: [_jsx(Text, { wrap: "wrap", children: displayText(String(details.path ?? "")) }), item.args.args ? _jsx(Text, { wrap: "wrap", children: displayText(String(item.args.args)) }) : null] }) : null] }) : null });
10
+ }
11
+ //# sourceMappingURL=SkillToolView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillToolView.js","sourceRoot":"","sources":["../../../src/tui/tools/SkillToolView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAiC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,UAAU,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAA6D;IACnH,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,OAAO,EAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,YACnG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAC,eAAe,IAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,aAChE,KAAC,IAAI,cAAE,QAAQ,CAAC,IAAI,CAAC,GAAQ,EAC5B,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,8BACtC,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,YAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAQ,EACjE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,YAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAQ,CAAC,CAAC,CAAC,IAAI,IACrF,CAAC,CAAC,CAAC,IAAI,IACO,CAAC,CAAC,CAAC,IAAI,GACZ,CAAC;AAChB,CAAC"}
@@ -4,7 +4,7 @@ export function projectMessages(messages, nextId) {
4
4
  const result = [];
5
5
  const tools = new Map();
6
6
  for (const message of messages) {
7
- if (message.role === "user")
7
+ if (message.role === "user" && !message.isMeta)
8
8
  result.push({ id: nextId(), kind: "user", timestamp: message.timestamp,
9
9
  text: message.content.filter(b => b.type === "text").map(b => b.text).join("\n"),
10
10
  attachments: message.content.filter(b => b.type === "image").map((_, index) => `[Image #${index + 1}]`) });
@@ -1 +1 @@
1
- {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/tui/transcript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/tui/transcript.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -69,6 +69,9 @@ export interface UserMessage {
69
69
  role: "user";
70
70
  content: (TextContent | ImageContent)[];
71
71
  timestamp: number;
72
+ /** Program-generated context, retained on disk but hidden from user-message UI. */
73
+ isMeta?: boolean;
74
+ metadata?: Record<string, JsonValue>;
72
75
  }
73
76
  export interface AssistantMessage {
74
77
  role: "assistant";
@@ -203,6 +206,8 @@ export interface AgentToolResult<T = unknown> {
203
206
  content: (TextContent | ImageContent)[];
204
207
  /** Arbitrary structured details for logs or UI rendering. */
205
208
  details: T;
209
+ /** Added after the complete tool-result batch, preserving protocol call/result pairing. */
210
+ newMessages?: UserMessage[];
206
211
  /**
207
212
  * Hint that the agent should stop after the current tool batch.
208
213
  * Early termination only happens when every finalized tool result in the batch sets this to true.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anti-trace",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "license": "MIT",
5
5
  "description": "Terminal AI coding agent with bring-your-own-key model support",
6
6
  "repository": {
@@ -42,6 +42,7 @@
42
42
  "test:types": "tsc --project tsconfig.test.json",
43
43
  "test:coverage": "c8 node scripts/run-tests.mjs",
44
44
  "test:live": "node scripts/run-live-tests.mjs",
45
+ "test:live:skills": "node scripts/run-live-tests.mjs --skills",
45
46
  "check": "npm run typecheck && npm run test:types && npm test && npm run build"
46
47
  },
47
48
  "engines": {
@@ -55,7 +56,8 @@
55
56
  "react": "19.2.4",
56
57
  "react-devtools-core": "6.1.2",
57
58
  "string-width": "8.3.0",
58
- "typebox": "1.3.7"
59
+ "typebox": "1.3.7",
60
+ "yaml": "2.9.1"
59
61
  },
60
62
  "devDependencies": {
61
63
  "@types/node": "22.19.19",