xiaotime 0.6.1 → 0.8.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.
Files changed (47) hide show
  1. package/dist/background.d.ts +47 -0
  2. package/dist/background.d.ts.map +1 -0
  3. package/dist/background.js +110 -0
  4. package/dist/background.js.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +70 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/ink/App.d.ts +1 -0
  10. package/dist/ink/App.d.ts.map +1 -1
  11. package/dist/ink/App.js +11 -3
  12. package/dist/ink/App.js.map +1 -1
  13. package/dist/ink/runSessionInk.d.ts.map +1 -1
  14. package/dist/ink/runSessionInk.js +50 -2
  15. package/dist/ink/runSessionInk.js.map +1 -1
  16. package/dist/ink/store.d.ts +11 -0
  17. package/dist/ink/store.d.ts.map +1 -1
  18. package/dist/ink/store.js +12 -0
  19. package/dist/ink/store.js.map +1 -1
  20. package/dist/mcp.d.ts +94 -0
  21. package/dist/mcp.d.ts.map +1 -0
  22. package/dist/mcp.js +282 -0
  23. package/dist/mcp.js.map +1 -0
  24. package/dist/room_agent.d.ts +7 -0
  25. package/dist/room_agent.d.ts.map +1 -0
  26. package/dist/room_agent.js +395 -0
  27. package/dist/room_agent.js.map +1 -0
  28. package/dist/settings.d.ts +9 -1
  29. package/dist/settings.d.ts.map +1 -1
  30. package/dist/settings.js +46 -4
  31. package/dist/settings.js.map +1 -1
  32. package/dist/skills.d.ts +14 -0
  33. package/dist/skills.d.ts.map +1 -0
  34. package/dist/skills.js +112 -0
  35. package/dist/skills.js.map +1 -0
  36. package/dist/todos.d.ts +26 -0
  37. package/dist/todos.d.ts.map +1 -0
  38. package/dist/todos.js +55 -0
  39. package/dist/todos.js.map +1 -0
  40. package/dist/tools.d.ts +26 -0
  41. package/dist/tools.d.ts.map +1 -1
  42. package/dist/tools.js +496 -1
  43. package/dist/tools.js.map +1 -1
  44. package/dist/ws.d.ts.map +1 -1
  45. package/dist/ws.js +34 -2
  46. package/dist/ws.js.map +1 -1
  47. package/package.json +2 -1
package/dist/skills.js ADDED
@@ -0,0 +1,112 @@
1
+ /*
2
+ * Client-loadable skills -- SPRINT-CLI-CAPABILITY-PARITY-1 (#14608).
3
+ *
4
+ * Skills the agent can discover and pull in the project it is working in:
5
+ * every <dir>/.claude/skills/[slug]/SKILL.md under the session cwd, plus a
6
+ * user-global ~/.xiaotime/skills/. list_skills shows what is available
7
+ * (name + one-line description from the frontmatter); load_skill returns a
8
+ * skill's full instructions for the agent to follow on demand.
9
+ *
10
+ * Scope note (#14608): this is the PULL form -- the agent asks for a local
11
+ * skill and follows it. AMBIENT injection of client skills into the LLM
12
+ * system prompt is server-side (the brain builds the prompt via
13
+ * shared/skills + pipeline.py), so that half is a companion server change,
14
+ * not a CLI one -- the same client/server boundary as sub-agents.
15
+ */
16
+ import * as fs from "fs";
17
+ import * as os from "os";
18
+ import * as path from "path";
19
+ // Skill search roots: the project's .claude/skills + a user-global one.
20
+ export function skillRoots(baseDir = process.cwd()) {
21
+ return [
22
+ path.join(baseDir, ".claude", "skills"),
23
+ path.join(os.homedir(), ".xiaotime", "skills"),
24
+ ];
25
+ }
26
+ // Pull name / description out of a SKILL.md leading frontmatter block
27
+ // (--- ... ---). Minimal on purpose -- a full YAML parse is not worth a
28
+ // dependency for two scalar fields. Falls back to the directory name.
29
+ export function parseFrontmatter(content, fallbackName) {
30
+ let name = fallbackName;
31
+ let description = "";
32
+ const m = content.match(/^---\s*\n([\s\S]*?)\n---/);
33
+ if (m) {
34
+ for (const line of m[1].split("\n")) {
35
+ const kv = line.match(/^(name|description)\s*:\s*(.+?)\s*$/i);
36
+ if (kv) {
37
+ const val = kv[2].replace(/^["']|["']$/g, "");
38
+ if (kv[1].toLowerCase() === "name")
39
+ name = val;
40
+ else
41
+ description = val;
42
+ }
43
+ }
44
+ }
45
+ return { name, description };
46
+ }
47
+ // Discover every skill under the search roots, de-duplicated by name
48
+ // (first root wins).
49
+ export function listSkills(baseDir = process.cwd()) {
50
+ const seen = new Set();
51
+ const out = [];
52
+ for (const root of skillRoots(baseDir)) {
53
+ let entries;
54
+ try {
55
+ entries = fs.readdirSync(root);
56
+ }
57
+ catch {
58
+ continue; // root does not exist -- fine
59
+ }
60
+ entries.sort();
61
+ for (const entry of entries) {
62
+ const dir = path.join(root, entry);
63
+ const skillFile = path.join(dir, "SKILL.md");
64
+ let stat;
65
+ try {
66
+ stat = fs.statSync(dir);
67
+ }
68
+ catch {
69
+ continue;
70
+ }
71
+ if (!stat.isDirectory() || !fs.existsSync(skillFile))
72
+ continue;
73
+ let content;
74
+ try {
75
+ content = fs.readFileSync(skillFile, "utf-8");
76
+ }
77
+ catch {
78
+ continue;
79
+ }
80
+ const meta = parseFrontmatter(content, entry);
81
+ if (seen.has(meta.name))
82
+ continue;
83
+ seen.add(meta.name);
84
+ out.push({ name: meta.name, description: meta.description, dir });
85
+ }
86
+ }
87
+ return out;
88
+ }
89
+ // Return a skill's full SKILL.md text, or null if no such skill is found.
90
+ export function loadSkill(name, baseDir = process.cwd()) {
91
+ for (const skill of listSkills(baseDir)) {
92
+ if (skill.name === name) {
93
+ try {
94
+ return fs.readFileSync(path.join(skill.dir, "SKILL.md"), "utf-8");
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ }
100
+ }
101
+ return null;
102
+ }
103
+ // Render the discovered skills as a name/description list.
104
+ export function renderSkillList(skills) {
105
+ if (skills.length === 0) {
106
+ return "(no local skills found under ./.claude/skills or ~/.xiaotime/skills)";
107
+ }
108
+ return skills
109
+ .map((s) => (s.description ? s.name + " -- " + s.description : s.name))
110
+ .join("\n");
111
+ }
112
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Task/todo tracking — SPRINT-CLI-CAPABILITY-PARITY-1 (#14608).
3
+ *
4
+ * A working-memory aid for multi-step work: the agent writes the whole
5
+ * task list each time (the Claude-Code TodoWrite shape — the list is
6
+ * state the model owns, not an append log), and the rendered checklist
7
+ * comes back as the tool result so it lands in the transcript for both
8
+ * the classic and Ink surfaces without either needing bespoke render
9
+ * wiring. Kept in a session-global store so a future status bar can read
10
+ * the current list.
11
+ */
12
+ export type TodoStatus = "pending" | "in_progress" | "completed";
13
+ export interface Todo {
14
+ content: string;
15
+ status: TodoStatus;
16
+ }
17
+ /**
18
+ * Replace the whole list. Throws on a malformed entry so the tool
19
+ * surfaces a real error instead of silently storing junk.
20
+ */
21
+ export declare function setTodos(list: unknown): Todo[];
22
+ export declare function getTodos(): Todo[];
23
+ export declare function clearTodos(): void;
24
+ /** Render the list as a plain-text checklist (tool-result body). */
25
+ export declare function renderTodos(list?: Todo[]): string;
26
+ //# sourceMappingURL=todos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todos.d.ts","sourceRoot":"","sources":["../src/todos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;AAEjE,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;CACpB;AAMD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,CAgB9C;AAED,wBAAgB,QAAQ,IAAI,IAAI,EAAE,CAEjC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAQD,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,IAAI,GAAE,IAAI,EAAU,GAAG,MAAM,CAKxD"}
package/dist/todos.js ADDED
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Task/todo tracking — SPRINT-CLI-CAPABILITY-PARITY-1 (#14608).
3
+ *
4
+ * A working-memory aid for multi-step work: the agent writes the whole
5
+ * task list each time (the Claude-Code TodoWrite shape — the list is
6
+ * state the model owns, not an append log), and the rendered checklist
7
+ * comes back as the tool result so it lands in the transcript for both
8
+ * the classic and Ink surfaces without either needing bespoke render
9
+ * wiring. Kept in a session-global store so a future status bar can read
10
+ * the current list.
11
+ */
12
+ const VALID = new Set(["pending", "in_progress", "completed"]);
13
+ let todos = [];
14
+ /**
15
+ * Replace the whole list. Throws on a malformed entry so the tool
16
+ * surfaces a real error instead of silently storing junk.
17
+ */
18
+ export function setTodos(list) {
19
+ if (!Array.isArray(list)) {
20
+ throw new Error("todos must be an array of { content, status }");
21
+ }
22
+ const next = list.map((raw, i) => {
23
+ const item = raw;
24
+ const content = typeof item?.content === "string" ? item.content.trim() : "";
25
+ const status = String(item?.status ?? "");
26
+ if (!content)
27
+ throw new Error(`todo #${i + 1} is missing content`);
28
+ if (!VALID.has(status)) {
29
+ throw new Error(`todo #${i + 1} has invalid status "${status}" (use pending / in_progress / completed)`);
30
+ }
31
+ return { content, status: status };
32
+ });
33
+ todos = next;
34
+ return todos;
35
+ }
36
+ export function getTodos() {
37
+ return todos;
38
+ }
39
+ export function clearTodos() {
40
+ todos = [];
41
+ }
42
+ const MARK = {
43
+ completed: "[x]",
44
+ in_progress: "[~]",
45
+ pending: "[ ]",
46
+ };
47
+ /** Render the list as a plain-text checklist (tool-result body). */
48
+ export function renderTodos(list = todos) {
49
+ if (list.length === 0)
50
+ return "(no tasks)";
51
+ const done = list.filter((t) => t.status === "completed").length;
52
+ const lines = list.map((t) => `${MARK[t.status]} ${t.content}`);
53
+ return `Tasks (${done}/${list.length} done):\n${lines.join("\n")}`;
54
+ }
55
+ //# sourceMappingURL=todos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todos.js","sourceRoot":"","sources":["../src/todos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,MAAM,KAAK,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEpF,IAAI,KAAK,GAAW,EAAE,CAAC;AAEvB;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,GAAW,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,GAA8C,CAAC;QAC5D,MAAM,OAAO,GAAG,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,MAAM,2CAA2C,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAoB,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,KAAK,GAAG,IAAI,CAAC;IACb,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,KAAK,GAAG,EAAE,CAAC;AACb,CAAC;AAED,MAAM,IAAI,GAA+B;IACvC,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,oEAAoE;AACpE,MAAM,UAAU,WAAW,CAAC,OAAe,KAAK;IAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAChE,OAAO,UAAU,IAAI,IAAI,IAAI,CAAC,MAAM,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACrE,CAAC"}
package/dist/tools.d.ts CHANGED
@@ -47,4 +47,30 @@ export declare function executeTool(call: ToolCall, ui: SessionUI): Promise<Tool
47
47
  export declare function listRecursive(dir: string, pattern?: string, cap?: number): string[];
48
48
  export declare function _listDirectoryMax(): number;
49
49
  export declare function globToRegex(glob: string): RegExp;
50
+ /** Count non-overlapping occurrences of `needle` in `hay`. */
51
+ export declare function _countOccurrences(hay: string, needle: string): number;
52
+ /**
53
+ * Replace the first literal occurrence of `needle` with `repl`.
54
+ * Uses index-splicing (not String.replace) so `$&`/`$1` sequences in
55
+ * `repl` are inserted verbatim rather than interpreted as regex
56
+ * back-references (#14608 — the surgical-edit correctness trap).
57
+ */
58
+ export declare function _replaceFirst(hay: string, needle: string, repl: string): string;
59
+ /**
60
+ * Recursively grep a directory tree. Skips dotfiles, node_modules,
61
+ * binary files (any NUL byte), and files larger than 2 MB. Returns
62
+ * `relpath:lineno:linetext` matches, capped at `cap`. Directory entries
63
+ * are visited in sorted order for deterministic output.
64
+ */
65
+ export declare function grepTree(dir: string, regex: RegExp, glob?: string, cap?: number): {
66
+ matches: string[];
67
+ truncated: boolean;
68
+ };
69
+ /**
70
+ * Reduce an HTML document to readable text: drop script/style/comments
71
+ * and tags, decode the common named entities, and collapse whitespace.
72
+ * Intentionally minimal — enough to make a fetched page legible to the
73
+ * agent, not a full HTML parser.
74
+ */
75
+ export declare function stripHtml(html: string): string;
50
76
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAS/C,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAiBD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACrF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,aAAa,EAAE,iBAAiB,EAiF5C,CAAC;AAIF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,QAExC;AACD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAkED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,QAAQ,EACd,EAAE,EAAE,SAAS,GACZ,OAAO,CAAC,UAAU,CAAC,CAkMrB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBnF;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOhD"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAa/C,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAiBD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACrF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,aAAa,EAAE,iBAAiB,EA+N5C,CAAC;AAIF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,QAExC;AACD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAkED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,QAAQ,EACd,EAAE,EAAE,SAAS,GACZ,OAAO,CAAC,UAAU,CAAC,CAoerB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBnF;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CASrE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI/E;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,SAAM,GACR;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAsD3C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAe9C"}