@zaowu-labs/cli 1.0.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.
Files changed (102) hide show
  1. package/README.md +16 -0
  2. package/dist/args.d.ts +11 -0
  3. package/dist/args.d.ts.map +1 -0
  4. package/dist/args.js +65 -0
  5. package/dist/args.js.map +1 -0
  6. package/dist/command-contracts.d.ts +11 -0
  7. package/dist/command-contracts.d.ts.map +1 -0
  8. package/dist/command-contracts.js +74 -0
  9. package/dist/command-contracts.js.map +1 -0
  10. package/dist/domain-handlers.d.ts +4 -0
  11. package/dist/domain-handlers.d.ts.map +1 -0
  12. package/dist/domain-handlers.js +65 -0
  13. package/dist/domain-handlers.js.map +1 -0
  14. package/dist/domains.d.ts +4 -0
  15. package/dist/domains.d.ts.map +1 -0
  16. package/dist/domains.js +22 -0
  17. package/dist/domains.js.map +1 -0
  18. package/dist/handler-utils.d.ts +59 -0
  19. package/dist/handler-utils.d.ts.map +1 -0
  20. package/dist/handler-utils.js +113 -0
  21. package/dist/handler-utils.js.map +1 -0
  22. package/dist/handlers/ai-handlers.d.ts +4 -0
  23. package/dist/handlers/ai-handlers.d.ts.map +1 -0
  24. package/dist/handlers/ai-handlers.js +159 -0
  25. package/dist/handlers/ai-handlers.js.map +1 -0
  26. package/dist/handlers/auto-handlers.d.ts +5 -0
  27. package/dist/handlers/auto-handlers.d.ts.map +1 -0
  28. package/dist/handlers/auto-handlers.js +132 -0
  29. package/dist/handlers/auto-handlers.js.map +1 -0
  30. package/dist/handlers/config-handlers.d.ts +8 -0
  31. package/dist/handlers/config-handlers.d.ts.map +1 -0
  32. package/dist/handlers/config-handlers.js +140 -0
  33. package/dist/handlers/config-handlers.js.map +1 -0
  34. package/dist/handlers/data-handlers.d.ts +8 -0
  35. package/dist/handlers/data-handlers.d.ts.map +1 -0
  36. package/dist/handlers/data-handlers.js +135 -0
  37. package/dist/handlers/data-handlers.js.map +1 -0
  38. package/dist/handlers/dev-handlers.d.ts +6 -0
  39. package/dist/handlers/dev-handlers.d.ts.map +1 -0
  40. package/dist/handlers/dev-handlers.js +322 -0
  41. package/dist/handlers/dev-handlers.js.map +1 -0
  42. package/dist/handlers/doc-handlers.d.ts +7 -0
  43. package/dist/handlers/doc-handlers.d.ts.map +1 -0
  44. package/dist/handlers/doc-handlers.js +133 -0
  45. package/dist/handlers/doc-handlers.js.map +1 -0
  46. package/dist/handlers/plugin-handlers.d.ts +6 -0
  47. package/dist/handlers/plugin-handlers.d.ts.map +1 -0
  48. package/dist/handlers/plugin-handlers.js +149 -0
  49. package/dist/handlers/plugin-handlers.js.map +1 -0
  50. package/dist/handlers/teach-handlers.d.ts +4 -0
  51. package/dist/handlers/teach-handlers.d.ts.map +1 -0
  52. package/dist/handlers/teach-handlers.js +30 -0
  53. package/dist/handlers/teach-handlers.js.map +1 -0
  54. package/dist/handlers/web-handlers.d.ts +4 -0
  55. package/dist/handlers/web-handlers.d.ts.map +1 -0
  56. package/dist/handlers/web-handlers.js +90 -0
  57. package/dist/handlers/web-handlers.js.map +1 -0
  58. package/dist/help-text.d.ts +2 -0
  59. package/dist/help-text.d.ts.map +1 -0
  60. package/dist/help-text.js +439 -0
  61. package/dist/help-text.js.map +1 -0
  62. package/dist/index.d.ts +3 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +5 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/option-validation.d.ts +5 -0
  67. package/dist/option-validation.d.ts.map +1 -0
  68. package/dist/option-validation.js +111 -0
  69. package/dist/option-validation.js.map +1 -0
  70. package/dist/output.d.ts +5 -0
  71. package/dist/output.d.ts.map +1 -0
  72. package/dist/output.js +11 -0
  73. package/dist/output.js.map +1 -0
  74. package/dist/root-doctor.d.ts +22 -0
  75. package/dist/root-doctor.d.ts.map +1 -0
  76. package/dist/root-doctor.js +231 -0
  77. package/dist/root-doctor.js.map +1 -0
  78. package/dist/root-help.d.ts +8 -0
  79. package/dist/root-help.d.ts.map +1 -0
  80. package/dist/root-help.js +130 -0
  81. package/dist/root-help.js.map +1 -0
  82. package/dist/root-init.d.ts +4 -0
  83. package/dist/root-init.d.ts.map +1 -0
  84. package/dist/root-init.js +87 -0
  85. package/dist/root-init.js.map +1 -0
  86. package/dist/run.d.ts +8 -0
  87. package/dist/run.d.ts.map +1 -0
  88. package/dist/run.js +152 -0
  89. package/dist/run.js.map +1 -0
  90. package/dist/system-command.d.ts +3 -0
  91. package/dist/system-command.d.ts.map +1 -0
  92. package/dist/system-command.js +27 -0
  93. package/dist/system-command.js.map +1 -0
  94. package/dist/types.d.ts +16 -0
  95. package/dist/types.d.ts.map +1 -0
  96. package/dist/types.js +2 -0
  97. package/dist/types.js.map +1 -0
  98. package/dist/version.d.ts +2 -0
  99. package/dist/version.d.ts.map +1 -0
  100. package/dist/version.js +14 -0
  101. package/dist/version.js.map +1 -0
  102. package/package.json +54 -0
package/README.md ADDED
@@ -0,0 +1,16 @@
1
+ # @zaowu-labs/cli
2
+
3
+ Command-line interface for ZaoWu.
4
+
5
+ This package exposes the `zw` binary and wires domain packages into one product
6
+ entry point. It owns command routing, help text, human output, JSON output, and
7
+ operation-plan presentation.
8
+
9
+ Safety:
10
+
11
+ - Sensitive commands preview by default or require explicit confirmation.
12
+ - File-writing previews include generated-content fingerprints in their
13
+ operation plans when the CLI can determine the content before confirmation.
14
+ - Expected errors are formatted without raw stack traces.
15
+ - JSON output is intended for automation and should stay schema-versioned where
16
+ public contracts are defined.
package/dist/args.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export interface ParsedArgs {
2
+ positionals: string[];
3
+ flags: ReadonlySet<string>;
4
+ values: ReadonlyMap<string, string>;
5
+ missingValues: readonly string[];
6
+ options: ReadonlySet<string>;
7
+ }
8
+ export declare const parseArgs: (args: readonly string[]) => ParsedArgs;
9
+ export declare const hasFlag: (parsed: ParsedArgs, flag: string) => boolean;
10
+ export declare const getValue: (parsed: ParsedArgs, name: string) => string | undefined;
11
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9B;AAeD,eAAO,MAAM,SAAS,GAAI,MAAM,SAAS,MAAM,EAAE,KAAG,UAwDnD,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,QAAQ,UAAU,EAAE,MAAM,MAAM,KAAG,OAAiC,CAAC;AAE7F,eAAO,MAAM,QAAQ,GAAI,QAAQ,UAAU,EAAE,MAAM,MAAM,KAAG,MAAM,GAAG,SAC5C,CAAC"}
package/dist/args.js ADDED
@@ -0,0 +1,65 @@
1
+ const FLAGS_WITH_VALUES = new Set([
2
+ '--file',
3
+ '--format',
4
+ '--count',
5
+ '--model',
6
+ '--output',
7
+ '--plan-fingerprint',
8
+ '--provider',
9
+ '--rows',
10
+ '--sheet',
11
+ '--source',
12
+ ]);
13
+ export const parseArgs = (args) => {
14
+ const positionals = [];
15
+ const flags = new Set();
16
+ const values = new Map();
17
+ const missingValues = [];
18
+ const options = new Set();
19
+ for (let index = 0; index < args.length; index += 1) {
20
+ const arg = args[index];
21
+ if (!arg.startsWith('--')) {
22
+ positionals.push(arg);
23
+ continue;
24
+ }
25
+ if (arg.includes('=')) {
26
+ const eqIndex = arg.indexOf('=');
27
+ const key = arg.slice(0, eqIndex);
28
+ const val = arg.slice(eqIndex + 1);
29
+ options.add(key);
30
+ if (FLAGS_WITH_VALUES.has(key)) {
31
+ if (val) {
32
+ values.set(key, val);
33
+ }
34
+ else {
35
+ missingValues.push(key);
36
+ }
37
+ continue;
38
+ }
39
+ flags.add(key);
40
+ continue;
41
+ }
42
+ options.add(arg);
43
+ if (FLAGS_WITH_VALUES.has(arg)) {
44
+ if (args[index + 1] && !args[index + 1].startsWith('--')) {
45
+ values.set(arg, args[index + 1]);
46
+ index += 1;
47
+ }
48
+ else {
49
+ missingValues.push(arg);
50
+ }
51
+ continue;
52
+ }
53
+ flags.add(arg);
54
+ }
55
+ return {
56
+ positionals,
57
+ flags,
58
+ values,
59
+ missingValues,
60
+ options,
61
+ };
62
+ };
63
+ export const hasFlag = (parsed, flag) => parsed.flags.has(flag);
64
+ export const getValue = (parsed, name) => parsed.values.get(name);
65
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAQA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;IACV,oBAAoB;IACpB,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAuB,EAAc,EAAE;IAC/D,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAClC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEjB,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC;gBACD,SAAS;YACX,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjB,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjC,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YACD,SAAS;QACX,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,OAAO;QACL,WAAW;QACX,KAAK;QACL,MAAM;QACN,aAAa;QACb,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAkB,EAAE,IAAY,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAE7F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAkB,EAAE,IAAY,EAAsB,EAAE,CAC/E,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface CommandContract {
2
+ id: string;
3
+ args: readonly string[];
4
+ helpArgs: readonly string[];
5
+ helpIncludes: readonly string[];
6
+ json: boolean;
7
+ sensitive: boolean;
8
+ schemaFile?: string;
9
+ }
10
+ export declare const COMMAND_CONTRACTS: readonly CommandContract[];
11
+ //# sourceMappingURL=command-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-contracts.d.ts","sourceRoot":"","sources":["../src/command-contracts.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAKD,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAuEvD,CAAC"}
@@ -0,0 +1,74 @@
1
+ const commandSchemaFile = (id) => `schemas/zaowu.command.${id.replace('.', '-')}.schema.json`;
2
+ export const COMMAND_CONTRACTS = [
3
+ {
4
+ id: 'root.help',
5
+ args: ['--help'],
6
+ helpArgs: ['--help'],
7
+ helpIncludes: ['ZaoWu / 造物', 'zw doctor'],
8
+ json: true,
9
+ sensitive: false,
10
+ },
11
+ {
12
+ id: 'init',
13
+ args: ['init'],
14
+ helpArgs: ['init', '--help'],
15
+ helpIncludes: ['ZaoWu Init', 'zw init --yes', '--plan-fingerprint <hash>'],
16
+ json: true,
17
+ sensitive: true,
18
+ schemaFile: commandSchemaFile('init'),
19
+ },
20
+ {
21
+ id: 'doctor',
22
+ args: ['doctor'],
23
+ helpArgs: ['doctor', '--help'],
24
+ helpIncludes: ['ZaoWu Doctor', 'zw doctor --json'],
25
+ json: true,
26
+ sensitive: false,
27
+ schemaFile: commandSchemaFile('doctor'),
28
+ },
29
+ ...[
30
+ ['ai', 'ask', 'ZaoWu AI Ask', true],
31
+ ['ai', 'providers', 'ZaoWu AI Providers', false],
32
+ ['auto', 'validate', 'ZaoWu Auto Validate', false],
33
+ ['auto', 'plan', 'ZaoWu Auto Plan', false],
34
+ ['auto', 'run', 'ZaoWu Auto Run', true],
35
+ ['config', 'show', 'ZaoWu Config Show', false],
36
+ ['config', 'path', 'ZaoWu Config Path', false],
37
+ ['config', 'validate', 'ZaoWu Config Validate', false],
38
+ ['config', 'get', 'ZaoWu Config Get', false],
39
+ ['config', 'set', 'ZaoWu Config Set', true],
40
+ ['config', 'migrate', 'ZaoWu Config Migrate', true],
41
+ ['data', 'inspect', 'ZaoWu Data Inspect', false],
42
+ ['data', 'analyze', 'ZaoWu Data Analyze', false],
43
+ ['data', 'clean', 'ZaoWu Data Clean', true],
44
+ ['data', 'schema', 'ZaoWu Data Schema', false],
45
+ ['data', 'sample', 'ZaoWu Data Sample', false],
46
+ ['data', 'sheets', 'ZaoWu Data Sheets', false],
47
+ ['dev', 'status', 'ZaoWu Dev Status', false],
48
+ ['dev', 'review', 'ZaoWu Dev Review', true],
49
+ ['dev', 'commit', 'ZaoWu Dev Commit', true],
50
+ ['dev', 'sync', 'ZaoWu Dev Sync', true],
51
+ ['doc', 'summary', 'ZaoWu Doc Summary', false],
52
+ ['doc', 'extract', 'ZaoWu Doc Extract', false],
53
+ ['doc', 'convert', 'ZaoWu Doc Convert', true],
54
+ ['doc', 'outline', 'ZaoWu Doc Outline', false],
55
+ ['doc', 'search', 'ZaoWu Doc Search', false],
56
+ ['plugin', 'list', 'ZaoWu Plugin List', false],
57
+ ['plugin', 'install', 'ZaoWu Plugin Install', true],
58
+ ['plugin', 'remove', 'ZaoWu Plugin Remove', true],
59
+ ['plugin', 'validate', 'ZaoWu Plugin Validate', false],
60
+ ['teach', 'plan', 'ZaoWu Teach Plan', false],
61
+ ['teach', 'quiz', 'ZaoWu Teach Quiz', false],
62
+ ['web', 'inspect', 'ZaoWu Web Inspect', true],
63
+ ['web', 'fetch', 'ZaoWu Web Fetch', true],
64
+ ].map(([domain, action, title, sensitive]) => ({
65
+ id: `${domain}.${action}`,
66
+ args: [domain, action],
67
+ helpArgs: [domain, action, '--help'],
68
+ helpIncludes: [title, `zw ${domain} ${action}`],
69
+ json: true,
70
+ sensitive: sensitive,
71
+ schemaFile: commandSchemaFile(`${domain}.${action}`),
72
+ })),
73
+ ];
74
+ //# sourceMappingURL=command-contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-contracts.js","sourceRoot":"","sources":["../src/command-contracts.ts"],"names":[],"mappings":"AAUA,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAU,EAAE,CAC/C,yBAAyB,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC;AAE9D,MAAM,CAAC,MAAM,iBAAiB,GAA+B;IAC3D;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,QAAQ,EAAE,CAAC,QAAQ,CAAC;QACpB,YAAY,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;QACzC,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,KAAK;KACjB;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC5B,YAAY,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,2BAA2B,CAAC;QAC1E,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC;KACtC;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC9B,YAAY,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC;QAClD,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC;KACxC;IACD,GAAG;QACD,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC;QACnC,CAAC,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,CAAC;QAChD,CAAC,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,KAAK,CAAC;QAClD,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC;QAC1C,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,CAAC;QACvC,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,KAAK,CAAC;QAC9C,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,KAAK,CAAC;QAC9C,CAAC,QAAQ,EAAE,UAAU,EAAE,uBAAuB,EAAE,KAAK,CAAC;QACtD,CAAC,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC;QAC5C,CAAC,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,CAAC;QAC3C,CAAC,QAAQ,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,CAAC;QACnD,CAAC,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,CAAC;QAChD,CAAC,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,CAAC;QAChD,CAAC,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC;QAC3C,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,CAAC;QAC9C,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,CAAC;QAC9C,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,CAAC;QAC9C,CAAC,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,CAAC;QAC5C,CAAC,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,CAAC;QAC3C,CAAC,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,CAAC;QAC3C,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC;QACvC,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC;QAC9C,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC;QAC9C,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,CAAC;QAC7C,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC;QAC9C,CAAC,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,CAAC;QAC5C,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,KAAK,CAAC;QAC9C,CAAC,QAAQ,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,CAAC;QACnD,CAAC,QAAQ,EAAE,QAAQ,EAAE,qBAAqB,EAAE,IAAI,CAAC;QACjD,CAAC,QAAQ,EAAE,UAAU,EAAE,uBAAuB,EAAE,KAAK,CAAC;QACtD,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,CAAC;QAC5C,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,CAAC;QAC5C,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,CAAC;QAC7C,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,CAAC;KAC1C,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,EAAE,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE;QACzB,IAAI,EAAE,CAAC,MAAgB,EAAE,MAAgB,CAAC;QAC1C,QAAQ,EAAE,CAAC,MAAgB,EAAE,MAAgB,EAAE,QAAQ,CAAC;QACxD,YAAY,EAAE,CAAC,KAAe,EAAE,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QACzD,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,SAAoB;QAC/B,UAAU,EAAE,iBAAiB,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;KACrD,CAAC,CAAC;CACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type DomainActionHandler, type DomainHandlerContext } from './handler-utils.js';
2
+ export { type DomainActionHandler, type DomainHandlerContext };
3
+ export declare const getDomainActionHandler: (domainName: string, actionName: string) => DomainActionHandler | undefined;
4
+ //# sourceMappingURL=domain-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-handlers.d.ts","sourceRoot":"","sources":["../src/domain-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AA0CzF,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,CAAC;AAyD/D,eAAO,MAAM,sBAAsB,GACjC,YAAY,MAAM,EAClB,YAAY,MAAM,KACjB,mBAAmB,GAAG,SAA+C,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { handleAiAsk, handleAiProviders } from './handlers/ai-handlers.js';
2
+ import { handleAutoPlan, handleAutoRun, handleAutoValidate } from './handlers/auto-handlers.js';
3
+ import { handleConfigGet, handleConfigMigrate, handleConfigPath, handleConfigSet, handleConfigShow, handleConfigValidate, } from './handlers/config-handlers.js';
4
+ import { handleDataAnalyze, handleDataClean, handleDataInspect, handleDataSample, handleDataSchema, handleDataSheets, } from './handlers/data-handlers.js';
5
+ import { handleDevCommit, handleDevReview, handleDevStatus, handleDevSync, } from './handlers/dev-handlers.js';
6
+ import { handleDocConvert, handleDocExtract, handleDocOutline, handleDocSearch, handleDocSummary, } from './handlers/doc-handlers.js';
7
+ import { handlePluginInstall, handlePluginList, handlePluginRemove, handlePluginValidate, } from './handlers/plugin-handlers.js';
8
+ import { handleTeachPlan, handleTeachQuiz } from './handlers/teach-handlers.js';
9
+ import { handleWebFetch, handleWebInspect } from './handlers/web-handlers.js';
10
+ const HANDLERS = {
11
+ ai: {
12
+ ask: handleAiAsk,
13
+ providers: handleAiProviders,
14
+ },
15
+ auto: {
16
+ plan: handleAutoPlan,
17
+ run: handleAutoRun,
18
+ validate: handleAutoValidate,
19
+ },
20
+ config: {
21
+ get: handleConfigGet,
22
+ migrate: handleConfigMigrate,
23
+ path: handleConfigPath,
24
+ set: handleConfigSet,
25
+ show: handleConfigShow,
26
+ validate: handleConfigValidate,
27
+ },
28
+ data: {
29
+ analyze: handleDataAnalyze,
30
+ clean: handleDataClean,
31
+ inspect: handleDataInspect,
32
+ sample: handleDataSample,
33
+ schema: handleDataSchema,
34
+ sheets: handleDataSheets,
35
+ },
36
+ dev: {
37
+ commit: handleDevCommit,
38
+ review: handleDevReview,
39
+ status: handleDevStatus,
40
+ sync: handleDevSync,
41
+ },
42
+ doc: {
43
+ convert: handleDocConvert,
44
+ extract: handleDocExtract,
45
+ outline: handleDocOutline,
46
+ search: handleDocSearch,
47
+ summary: handleDocSummary,
48
+ },
49
+ plugin: {
50
+ install: handlePluginInstall,
51
+ list: handlePluginList,
52
+ remove: handlePluginRemove,
53
+ validate: handlePluginValidate,
54
+ },
55
+ teach: {
56
+ plan: handleTeachPlan,
57
+ quiz: handleTeachQuiz,
58
+ },
59
+ web: {
60
+ fetch: handleWebFetch,
61
+ inspect: handleWebInspect,
62
+ },
63
+ };
64
+ export const getDomainActionHandler = (domainName, actionName) => HANDLERS[domainName]?.[actionName];
65
+ //# sourceMappingURL=domain-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-handlers.js","sourceRoot":"","sources":["../src/domain-handlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAI9E,MAAM,QAAQ,GAAwD;IACpE,EAAE,EAAE;QACF,GAAG,EAAE,WAAW;QAChB,SAAS,EAAE,iBAAiB;KAC7B;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,cAAc;QACpB,GAAG,EAAE,aAAa;QAClB,QAAQ,EAAE,kBAAkB;KAC7B;IACD,MAAM,EAAE;QACN,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,gBAAgB;QACtB,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,oBAAoB;KAC/B;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,eAAe;QACtB,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,gBAAgB;KACzB;IACD,GAAG,EAAE;QACH,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,eAAe;QACvB,IAAI,EAAE,aAAa;KACpB;IACD,GAAG,EAAE;QACH,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,gBAAgB;KAC1B;IACD,MAAM,EAAE;QACN,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,kBAAkB;QAC1B,QAAQ,EAAE,oBAAoB;KAC/B;IACD,KAAK,EAAE;QACL,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;KACtB;IACD,GAAG,EAAE;QACH,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,gBAAgB;KAC1B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,UAAkB,EAClB,UAAkB,EACe,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DomainDefinition } from '@zaowu-labs/core';
2
+ export declare const DOMAIN_DEFINITIONS: readonly DomainDefinition[];
3
+ export declare const findDomain: (name: string) => DomainDefinition | undefined;
4
+ //# sourceMappingURL=domains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../src/domains.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQzD,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAUzD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,gBAAgB,GAAG,SACF,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { AI_DOMAIN } from '@zaowu-labs/ai';
2
+ import { AUTO_DOMAIN } from '@zaowu-labs/auto';
3
+ import { CONFIG_DOMAIN } from '@zaowu-labs/config';
4
+ import { DATA_DOMAIN } from '@zaowu-labs/data';
5
+ import { DEV_DOMAIN } from '@zaowu-labs/dev';
6
+ import { DOC_DOMAIN } from '@zaowu-labs/doc';
7
+ import { PLUGIN_DOMAIN } from '@zaowu-labs/plugin';
8
+ import { TEACH_DOMAIN } from '@zaowu-labs/teach';
9
+ import { WEB_DOMAIN } from '@zaowu-labs/web';
10
+ export const DOMAIN_DEFINITIONS = [
11
+ AI_DOMAIN,
12
+ DEV_DOMAIN,
13
+ DOC_DOMAIN,
14
+ DATA_DOMAIN,
15
+ AUTO_DOMAIN,
16
+ WEB_DOMAIN,
17
+ TEACH_DOMAIN,
18
+ PLUGIN_DOMAIN,
19
+ CONFIG_DOMAIN,
20
+ ];
21
+ export const findDomain = (name) => DOMAIN_DEFINITIONS.find((domain) => domain.name === name);
22
+ //# sourceMappingURL=domains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domains.js","sourceRoot":"","sources":["../src/domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D,SAAS;IACT,UAAU;IACV,UAAU;IACV,WAAW;IACX,WAAW;IACX,UAAU;IACV,YAAY;IACZ,aAAa;IACb,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAgC,EAAE,CACvE,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Shared utilities used across all domain handler modules.
3
+ *
4
+ * Extracted from the original monolithic domain-handlers.ts to enable
5
+ * per-domain handler files while sharing common helper logic.
6
+ */
7
+ import { createContentOperationSubjects, createOperationPlan, hashOperationContent, ZaoWuError, type OperationPlan } from '@zaowu-labs/core';
8
+ import { getValue, hasFlag, type ParsedArgs } from './args.js';
9
+ import type { CliResult, CommandRunner } from './types.js';
10
+ export { createContentOperationSubjects, createOperationPlan, hashOperationContent, ZaoWuError, type OperationPlan, };
11
+ export { getValue, hasFlag };
12
+ export interface DomainHandlerContext {
13
+ cwd: string;
14
+ json: boolean;
15
+ dryRun: boolean;
16
+ expectedPlanFingerprint?: string;
17
+ yes: boolean;
18
+ parsed: ParsedArgs;
19
+ commandRunner: CommandRunner;
20
+ onChunk?: (chunk: string) => void;
21
+ }
22
+ export type DomainActionHandler = (args: readonly string[], context: DomainHandlerContext) => Promise<CliResult>;
23
+ export declare const requireTarget: (args: readonly string[], command: string) => string;
24
+ export declare const requireSecondTarget: (args: readonly string[], command: string, name: string) => string;
25
+ export declare const result: (context: DomainHandlerContext, payload: unknown, human: string) => CliResult;
26
+ export declare const formatObject: (value: unknown) => string;
27
+ export declare const withOperationPlan: <T extends object>(payload: T, operationPlan: OperationPlan) => T & {
28
+ operationPlan: OperationPlan;
29
+ };
30
+ export declare const assertOperationPlanFingerprint: (context: DomainHandlerContext, operationPlan: OperationPlan) => void;
31
+ export declare const formatList: (items: readonly string[]) => string;
32
+ export declare const quoteCliValue: (value: string) => string;
33
+ export declare const formatConfirmCommand: (parts: readonly string[]) => string;
34
+ export declare const formatCounts: (items: Record<string, number>) => string;
35
+ export declare const formatPolicy: (policy: {
36
+ shell: string;
37
+ fileWrites: string;
38
+ network: string;
39
+ }) => string;
40
+ export declare const formatSandbox: (sandbox: {
41
+ root: string;
42
+ workflowDirectory?: string;
43
+ shellCommands: string;
44
+ fileWrites: string;
45
+ network: string;
46
+ }) => string;
47
+ export declare const formatFinding: (finding: {
48
+ severity: string;
49
+ priority?: string;
50
+ category?: string;
51
+ title: string;
52
+ detail: string;
53
+ filePath?: string;
54
+ hunkHeader?: string;
55
+ line?: number;
56
+ }) => string;
57
+ export declare const formatOperationPlan: (plan: OperationPlan) => string;
58
+ export declare const parsePositiveInteger: (value: string | undefined, fallback: number) => number;
59
+ //# sourceMappingURL=handler-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-utils.d.ts","sourceRoot":"","sources":["../src/handler-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Shared utilities used across all domain handler modules.
3
+ *
4
+ * Extracted from the original monolithic domain-handlers.ts to enable
5
+ * per-domain handler files while sharing common helper logic.
6
+ */
7
+ import { assertOperationPlanFingerprint as assertOperationPlanFingerprintFromCore, createContentOperationSubjects, createOperationPlan, hashOperationContent, ZaoWuError, } from '@zaowu-labs/core';
8
+ import { getValue, hasFlag } from './args.js';
9
+ import { createResult, stringifyJSON } from './output.js';
10
+ export { createContentOperationSubjects, createOperationPlan, hashOperationContent, ZaoWuError, };
11
+ export { getValue, hasFlag };
12
+ export const requireTarget = (args, command) => {
13
+ const target = args[0];
14
+ if (!target) {
15
+ throw new ZaoWuError({
16
+ code: 'TARGET_REQUIRED',
17
+ message: 'Target is required.',
18
+ why: `\`${command}\` needs a target argument.`,
19
+ fix: `Run \`${command} --help\` to see the expected usage.`,
20
+ });
21
+ }
22
+ return target;
23
+ };
24
+ export const requireSecondTarget = (args, command, name) => {
25
+ const target = args[1];
26
+ if (!target) {
27
+ throw new ZaoWuError({
28
+ code: 'TARGET_REQUIRED',
29
+ message: `${name} is required.`,
30
+ why: `\`${command}\` needs ${name} as its second argument.`,
31
+ fix: `Run \`${command} --help\` to see the expected usage.`,
32
+ });
33
+ }
34
+ return target;
35
+ };
36
+ export const result = (context, payload, human) => createResult(0, context.json ? stringifyJSON(payload) : human);
37
+ export const formatObject = (value) => JSON.stringify(value, null, 2);
38
+ export const withOperationPlan = (payload, operationPlan) => ({
39
+ ...payload,
40
+ operationPlan,
41
+ });
42
+ // Thin adapter so handler code can keep using the (context, plan) call
43
+ // style while delegating to the shared core implementation.
44
+ export const assertOperationPlanFingerprint = (context, operationPlan) => {
45
+ assertOperationPlanFingerprintFromCore(context.expectedPlanFingerprint, operationPlan, context.yes, ZaoWuError);
46
+ };
47
+ export const formatList = (items) => items.length > 0 ? items.map((item) => `- ${item}`).join('\n') : '- none';
48
+ export const quoteCliValue = (value) => /^[A-Za-z0-9._@:/\\=-]+$/.test(value) ? value : `'${value.replaceAll("'", "''")}'`;
49
+ export const formatConfirmCommand = (parts) => parts.map((part) => (part.startsWith('--') ? part : quoteCliValue(part))).join(' ');
50
+ export const formatCounts = (items) => {
51
+ const lines = Object.entries(items)
52
+ .filter(([, count]) => count > 0)
53
+ .map(([name, count]) => `- ${name}: ${count}`);
54
+ return lines.length > 0 ? lines.join('\n') : '- none';
55
+ };
56
+ export const formatPolicy = (policy) => [
57
+ `- shell: ${policy.shell}`,
58
+ `- fileWrites: ${policy.fileWrites}`,
59
+ `- network: ${policy.network}`,
60
+ ].join('\n');
61
+ export const formatSandbox = (sandbox) => [
62
+ `- root: ${sandbox.root}`,
63
+ ...(sandbox.workflowDirectory ? [`- workflowDirectory: ${sandbox.workflowDirectory}`] : []),
64
+ `- shellCommands: ${sandbox.shellCommands}`,
65
+ `- fileWrites: ${sandbox.fileWrites}`,
66
+ `- network: ${sandbox.network}`,
67
+ ].join('\n');
68
+ export const formatFinding = (finding) => {
69
+ const fileLocation = finding.filePath && finding.line !== undefined
70
+ ? `${finding.filePath}:${finding.line}`
71
+ : finding.filePath;
72
+ const location = [fileLocation, finding.hunkHeader].filter(Boolean).join(' ');
73
+ const risk = [finding.severity, finding.priority, finding.category].filter(Boolean).join('/');
74
+ return `- ${risk}: ${finding.title}${location ? ` (${location})` : ''} - ${finding.detail}`;
75
+ };
76
+ export const formatOperationPlan = (plan) => [
77
+ 'Operation plan:',
78
+ `Risk: ${plan.risk}`,
79
+ `Confirmation required: ${plan.confirmationRequired ? 'yes' : 'no'}`,
80
+ `Fingerprint: ${plan.fingerprint}`,
81
+ ...(plan.confirmationRequired
82
+ ? [`Base confirmation flags: --yes --plan-fingerprint ${plan.fingerprint}`]
83
+ : []),
84
+ '',
85
+ 'Subjects:',
86
+ formatList(plan.subjects),
87
+ '',
88
+ 'Read:',
89
+ formatList(plan.reads),
90
+ '',
91
+ 'Write:',
92
+ formatList(plan.writes),
93
+ '',
94
+ 'Delete:',
95
+ formatList(plan.deletes),
96
+ '',
97
+ 'Execute:',
98
+ formatList(plan.executes),
99
+ '',
100
+ 'Network:',
101
+ formatList(plan.network),
102
+ '',
103
+ 'Secrets:',
104
+ formatList(plan.secrets),
105
+ '',
106
+ 'Notes:',
107
+ formatList(plan.notes),
108
+ ].join('\n');
109
+ export const parsePositiveInteger = (value, fallback) => {
110
+ const parsed = Number.parseInt(value ?? '', 10);
111
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
112
+ };
113
+ //# sourceMappingURL=handler-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-utils.js","sourceRoot":"","sources":["../src/handler-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type DomainActionHandler } from '../handler-utils.js';
2
+ export declare const handleAiAsk: DomainActionHandler;
3
+ export declare const handleAiProviders: DomainActionHandler;
4
+ //# sourceMappingURL=ai-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/ai-handlers.ts"],"names":[],"mappings":"AAQA,OAAO,EAQL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,WAAW,EAAE,mBA0IzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,mBA4B/B,CAAC"}