toolcraft 0.0.17 → 0.0.18

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 (81) hide show
  1. package/dist/cli.d.ts +2 -0
  2. package/dist/cli.js +833 -124
  3. package/dist/error-report.d.ts +39 -0
  4. package/dist/error-report.js +330 -0
  5. package/dist/human-in-loop/approval-tasks.js +11 -8
  6. package/dist/human-in-loop/approvals-commands.js +21 -20
  7. package/dist/human-in-loop/default-provider.js +5 -3
  8. package/dist/human-in-loop/runner.js +45 -4
  9. package/dist/index.d.ts +2 -2
  10. package/dist/index.js +55 -35
  11. package/dist/json-schema-converter.d.ts +1 -0
  12. package/dist/json-schema-converter.js +102 -52
  13. package/dist/mcp-proxy.d.ts +1 -0
  14. package/dist/mcp-proxy.js +13 -6
  15. package/dist/mcp.d.ts +2 -0
  16. package/dist/mcp.js +131 -55
  17. package/dist/sdk.d.ts +4 -2
  18. package/dist/sdk.js +132 -48
  19. package/dist/source-snippet.d.ts +8 -0
  20. package/dist/source-snippet.js +42 -0
  21. package/dist/stack-trim.d.ts +4 -0
  22. package/dist/stack-trim.js +70 -0
  23. package/dist/suggest.d.ts +4 -0
  24. package/dist/suggest.js +46 -0
  25. package/dist/user-error.d.ts +3 -0
  26. package/dist/user-error.js +7 -1
  27. package/dist/validation-errors.d.ts +5 -0
  28. package/dist/validation-errors.js +18 -0
  29. package/node_modules/@poe-code/design-system/dist/components/help-formatter-plain.d.ts +1 -0
  30. package/node_modules/@poe-code/design-system/dist/components/help-formatter-plain.js +1 -1
  31. package/node_modules/@poe-code/design-system/dist/components/text.d.ts +1 -0
  32. package/node_modules/@poe-code/design-system/dist/components/text.js +8 -0
  33. package/node_modules/@poe-code/design-system/dist/dashboard/buffer.js +8 -1
  34. package/node_modules/@poe-code/design-system/dist/dashboard/keymap.d.ts +5 -0
  35. package/node_modules/@poe-code/design-system/dist/dashboard/keymap.js +146 -12
  36. package/node_modules/@poe-code/design-system/dist/dashboard/terminal.js +31 -0
  37. package/node_modules/@poe-code/design-system/dist/dashboard/types.d.ts +1 -0
  38. package/node_modules/@poe-code/design-system/dist/explorer/actions.d.ts +16 -0
  39. package/node_modules/@poe-code/design-system/dist/explorer/actions.js +39 -0
  40. package/node_modules/@poe-code/design-system/dist/explorer/demo.d.ts +13 -0
  41. package/node_modules/@poe-code/design-system/dist/explorer/demo.js +297 -0
  42. package/node_modules/@poe-code/design-system/dist/explorer/events.d.ts +61 -0
  43. package/node_modules/@poe-code/design-system/dist/explorer/events.js +1 -0
  44. package/node_modules/@poe-code/design-system/dist/explorer/filter.d.ts +10 -0
  45. package/node_modules/@poe-code/design-system/dist/explorer/filter.js +95 -0
  46. package/node_modules/@poe-code/design-system/dist/explorer/index.d.ts +8 -0
  47. package/node_modules/@poe-code/design-system/dist/explorer/index.js +8 -0
  48. package/node_modules/@poe-code/design-system/dist/explorer/jobs.d.ts +7 -0
  49. package/node_modules/@poe-code/design-system/dist/explorer/jobs.js +59 -0
  50. package/node_modules/@poe-code/design-system/dist/explorer/keymap.d.ts +21 -0
  51. package/node_modules/@poe-code/design-system/dist/explorer/keymap.js +363 -0
  52. package/node_modules/@poe-code/design-system/dist/explorer/layout.d.ts +20 -0
  53. package/node_modules/@poe-code/design-system/dist/explorer/layout.js +73 -0
  54. package/node_modules/@poe-code/design-system/dist/explorer/reducer.d.ts +9 -0
  55. package/node_modules/@poe-code/design-system/dist/explorer/reducer.js +704 -0
  56. package/node_modules/@poe-code/design-system/dist/explorer/render/detail.d.ts +4 -0
  57. package/node_modules/@poe-code/design-system/dist/explorer/render/detail.js +96 -0
  58. package/node_modules/@poe-code/design-system/dist/explorer/render/footer.d.ts +4 -0
  59. package/node_modules/@poe-code/design-system/dist/explorer/render/footer.js +49 -0
  60. package/node_modules/@poe-code/design-system/dist/explorer/render/header.d.ts +4 -0
  61. package/node_modules/@poe-code/design-system/dist/explorer/render/header.js +56 -0
  62. package/node_modules/@poe-code/design-system/dist/explorer/render/index.d.ts +8 -0
  63. package/node_modules/@poe-code/design-system/dist/explorer/render/index.js +61 -0
  64. package/node_modules/@poe-code/design-system/dist/explorer/render/list.d.ts +4 -0
  65. package/node_modules/@poe-code/design-system/dist/explorer/render/list.js +106 -0
  66. package/node_modules/@poe-code/design-system/dist/explorer/render/modal.d.ts +3 -0
  67. package/node_modules/@poe-code/design-system/dist/explorer/render/modal.js +91 -0
  68. package/node_modules/@poe-code/design-system/dist/explorer/render/test-fixtures.d.ts +8 -0
  69. package/node_modules/@poe-code/design-system/dist/explorer/render/test-fixtures.js +156 -0
  70. package/node_modules/@poe-code/design-system/dist/explorer/runtime.d.ts +2 -0
  71. package/node_modules/@poe-code/design-system/dist/explorer/runtime.js +282 -0
  72. package/node_modules/@poe-code/design-system/dist/explorer/runtime.test-helpers.d.ts +50 -0
  73. package/node_modules/@poe-code/design-system/dist/explorer/runtime.test-helpers.js +101 -0
  74. package/node_modules/@poe-code/design-system/dist/explorer/state.d.ts +130 -0
  75. package/node_modules/@poe-code/design-system/dist/explorer/state.js +87 -0
  76. package/node_modules/@poe-code/design-system/dist/explorer/theme.d.ts +27 -0
  77. package/node_modules/@poe-code/design-system/dist/explorer/theme.js +97 -0
  78. package/node_modules/@poe-code/design-system/dist/index.d.ts +3 -0
  79. package/node_modules/@poe-code/design-system/dist/index.js +3 -0
  80. package/node_modules/@poe-code/design-system/package.json +1 -0
  81. package/package.json +6 -2
@@ -0,0 +1,97 @@
1
+ export function getExplorerTheme() {
2
+ return {
3
+ accent: accent,
4
+ muted: muted,
5
+ border: muted,
6
+ borderFocused: accent,
7
+ badge: (text, tone) => tonePainter(tone)(` ${text} `),
8
+ matchHighlight: (text) => accent(`\u001b[4m${text}\u001b[24m`)
9
+ };
10
+ }
11
+ export function getExplorerStyles() {
12
+ return resolveThemeName() === "light"
13
+ ? {
14
+ accent: { fg: "#006699", bold: true },
15
+ muted: { fg: "#666666" },
16
+ border: { fg: "#666666" },
17
+ borderFocused: { fg: "#006699", bold: true },
18
+ matchHighlight: { fg: "#006699", bold: true, underline: true },
19
+ tones: {
20
+ success: { fg: "#008800" },
21
+ warning: { fg: "#cc6600" },
22
+ error: { fg: "#cc0000" },
23
+ info: { fg: "#a200ff" },
24
+ muted: { fg: "#666666" }
25
+ }
26
+ }
27
+ : {
28
+ accent: { fg: "cyan", bold: true },
29
+ muted: { dim: true },
30
+ border: { dim: true },
31
+ borderFocused: { fg: "cyan", bold: true },
32
+ matchHighlight: { fg: "cyan", bold: true, underline: true },
33
+ tones: {
34
+ success: { fg: "green" },
35
+ warning: { fg: "yellow" },
36
+ error: { fg: "red" },
37
+ info: { fg: "magenta" },
38
+ muted: { dim: true }
39
+ }
40
+ };
41
+ }
42
+ function tonePainter(tone) {
43
+ const light = resolveThemeName() === "light";
44
+ if (tone === "success") {
45
+ return light ? hex(0, 136, 0) : ansi(32);
46
+ }
47
+ if (tone === "warning") {
48
+ return light ? hex(204, 102, 0) : ansi(33);
49
+ }
50
+ if (tone === "error") {
51
+ return light ? hex(204, 0, 0) : ansi(31);
52
+ }
53
+ if (tone === "info") {
54
+ return light ? hex(162, 0, 255) : ansi(35);
55
+ }
56
+ return muted;
57
+ }
58
+ function accent(text) {
59
+ return resolveThemeName() === "light" ? ansi(38, 2, 0, 102, 153, 1)(text) : ansi(36)(text);
60
+ }
61
+ function muted(text) {
62
+ return resolveThemeName() === "light" ? hex(102, 102, 102)(text) : ansi(2)(text);
63
+ }
64
+ function hex(red, green, blue) {
65
+ return ansi(38, 2, red, green, blue);
66
+ }
67
+ function ansi(...codes) {
68
+ return (text) => `\u001b[${codes.join(";")}m${text}\u001b[0m`;
69
+ }
70
+ function resolveThemeName(env = process.env) {
71
+ const raw = (env.POE_CODE_THEME ?? env.POE_THEME)?.toLowerCase();
72
+ if (raw === "light" || raw === "dark") {
73
+ return raw;
74
+ }
75
+ const apple = env.APPLE_INTERFACE_STYLE;
76
+ if (typeof apple === "string") {
77
+ return apple.toLowerCase() === "dark" ? "dark" : "light";
78
+ }
79
+ const vscodeKind = env.VSCODE_COLOR_THEME_KIND;
80
+ if (typeof vscodeKind === "string") {
81
+ const normalized = vscodeKind.toLowerCase();
82
+ if (normalized.includes("light")) {
83
+ return "light";
84
+ }
85
+ if (normalized.includes("dark")) {
86
+ return "dark";
87
+ }
88
+ }
89
+ const colorFGBG = env.COLORFGBG;
90
+ if (typeof colorFGBG === "string") {
91
+ const background = Number.parseInt(colorFGBG.split(";").at(-1) ?? "", 10);
92
+ if (Number.isFinite(background)) {
93
+ return background >= 8 ? "light" : "dark";
94
+ }
95
+ }
96
+ return "dark";
97
+ }
@@ -19,6 +19,9 @@ export * as acp from "./acp/index.js";
19
19
  export * as dashboard from "./dashboard/index.js";
20
20
  export { createDashboard, shouldUseInteractiveDashboard } from "./dashboard/index.js";
21
21
  export type { Dashboard, DashboardOptions } from "./dashboard/index.js";
22
+ export * as explorer from "./explorer/index.js";
23
+ export { runExplorer, singleDetail } from "./explorer/index.js";
24
+ export type { Row, DetailItem, Detail, DetailCtx, Action, ActionContext, ExplorerConfig, Tone, } from "./explorer/index.js";
22
25
  export * as prompts from "./prompts/index.js";
23
26
  export { intro, introPlain, outro, note, select, multiselect, text as promptText, confirm, confirmOrCancel, password, spinner, withSpinner, isCancel, cancel, log, PromptCancelledError } from "./prompts/index.js";
24
27
  export type { SelectOptions, MultiselectOptions, TextOptions, ConfirmOptions, PasswordOptions, SpinnerOptions, WithSpinnerOptions } from "./prompts/index.js";
@@ -18,6 +18,9 @@ export * as acp from "./acp/index.js";
18
18
  // Dashboard
19
19
  export * as dashboard from "./dashboard/index.js";
20
20
  export { createDashboard, shouldUseInteractiveDashboard } from "./dashboard/index.js";
21
+ // Explorer
22
+ export * as explorer from "./explorer/index.js";
23
+ export { runExplorer, singleDetail } from "./explorer/index.js";
21
24
  // Prompts
22
25
  export * as prompts from "./prompts/index.js";
23
26
  export { intro, introPlain, outro, note, select, multiselect, text as promptText, confirm, confirmOrCancel, password, spinner, withSpinner, isCancel, cancel, log, PromptCancelledError } from "./prompts/index.js";
@@ -6,6 +6,7 @@
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
8
8
  "build": "tsc",
9
+ "postbuild": "node scripts/smoke-built-exports.cjs",
9
10
  "lint": "cd ../.. && eslint packages/design-system --ext ts && tsc -p packages/design-system/tsconfig.json --noEmit",
10
11
  "test": "cd ../.. && vitest run $(rg --files packages/design-system/src -g '*.test.ts' | sort | tr '\\n' ' ')",
11
12
  "demo": "tsx scripts/demo.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toolcraft",
3
- "version": "0.0.17",
3
+ "version": "0.0.18",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -28,6 +28,10 @@
28
28
  "./human-in-loop": {
29
29
  "types": "./dist/human-in-loop/index.d.ts",
30
30
  "import": "./dist/human-in-loop/index.js"
31
+ },
32
+ "./source-snippet": {
33
+ "types": "./dist/source-snippet.d.ts",
34
+ "import": "./dist/source-snippet.js"
31
35
  }
32
36
  },
33
37
  "scripts": {
@@ -49,7 +53,7 @@
49
53
  "mustache": "^4.2.0",
50
54
  "smol-toml": "^1.3.0",
51
55
  "tiny-stdio-mcp-server": "^0.1.0",
52
- "toolcraft-schema": "^0.0.17",
56
+ "toolcraft-schema": "^0.0.18",
53
57
  "yaml": "^2.8.2"
54
58
  },
55
59
  "files": [