opencode-sat 0.0.16-next.0 → 0.0.16-next.2

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 (73) hide show
  1. package/README.md +61 -28
  2. package/dist/sat.d.ts.map +1 -1
  3. package/dist/sat.js +71 -20
  4. package/dist/sat.js.map +1 -1
  5. package/dist/src/append.d.ts +1 -4
  6. package/dist/src/append.d.ts.map +1 -1
  7. package/dist/src/append.js +4 -14
  8. package/dist/src/append.js.map +1 -1
  9. package/dist/src/{utils/compare.d.ts → compare.d.ts} +2 -0
  10. package/dist/src/compare.d.ts.map +1 -0
  11. package/dist/src/{utils/compare.js → compare.js} +20 -0
  12. package/dist/src/compare.js.map +1 -0
  13. package/dist/src/discover.d.ts +1 -1
  14. package/dist/src/discover.d.ts.map +1 -1
  15. package/dist/src/discover.js +4 -4
  16. package/dist/src/discover.js.map +1 -1
  17. package/dist/src/format-prompt.d.ts.map +1 -1
  18. package/dist/src/format-prompt.js +6 -2
  19. package/dist/src/format-prompt.js.map +1 -1
  20. package/dist/src/opencode/notify.d.ts +9 -0
  21. package/dist/src/opencode/notify.d.ts.map +1 -0
  22. package/dist/src/opencode/notify.js +14 -0
  23. package/dist/src/opencode/notify.js.map +1 -0
  24. package/dist/src/prompt-schema.d.ts +0 -3
  25. package/dist/src/prompt-schema.d.ts.map +1 -1
  26. package/dist/src/prompt-schema.js +0 -3
  27. package/dist/src/prompt-schema.js.map +1 -1
  28. package/dist/src/resolve.d.ts +1 -1
  29. package/dist/src/resolve.d.ts.map +1 -1
  30. package/dist/src/{process.d.ts → rewrite.d.ts} +3 -6
  31. package/dist/src/rewrite.d.ts.map +1 -0
  32. package/dist/src/{process.js → rewrite.js} +4 -8
  33. package/dist/src/rewrite.js.map +1 -0
  34. package/dist/src/rule-schema.d.ts +5 -4
  35. package/dist/src/rule-schema.d.ts.map +1 -1
  36. package/dist/src/rule-schema.js +107 -8
  37. package/dist/src/rule-schema.js.map +1 -1
  38. package/dist/src/safe.d.ts.map +1 -0
  39. package/dist/src/safe.js.map +1 -0
  40. package/dist/src/tools/descriptions.d.ts +8 -0
  41. package/dist/src/tools/descriptions.d.ts.map +1 -0
  42. package/dist/src/tools/descriptions.js +50 -0
  43. package/dist/src/tools/descriptions.js.map +1 -0
  44. package/dist/src/tools/prompts.d.ts +28 -0
  45. package/dist/src/tools/prompts.d.ts.map +1 -0
  46. package/dist/src/tools/prompts.js +46 -0
  47. package/dist/src/tools/prompts.js.map +1 -0
  48. package/dist/src/{tools.d.ts → tools/rules.d.ts} +28 -21
  49. package/dist/src/tools/rules.d.ts.map +1 -0
  50. package/dist/src/tools/rules.js +160 -0
  51. package/dist/src/tools/rules.js.map +1 -0
  52. package/dist/src/validate.d.ts.map +1 -0
  53. package/dist/src/{utils/validate.js → validate.js} +2 -2
  54. package/dist/src/validate.js.map +1 -0
  55. package/package.json +1 -1
  56. package/dist/src/format.d.ts +0 -16
  57. package/dist/src/format.d.ts.map +0 -1
  58. package/dist/src/format.js +0 -30
  59. package/dist/src/format.js.map +0 -1
  60. package/dist/src/process.d.ts.map +0 -1
  61. package/dist/src/process.js.map +0 -1
  62. package/dist/src/tools.d.ts.map +0 -1
  63. package/dist/src/tools.js +0 -197
  64. package/dist/src/tools.js.map +0 -1
  65. package/dist/src/utils/compare.d.ts.map +0 -1
  66. package/dist/src/utils/compare.js.map +0 -1
  67. package/dist/src/utils/safe.d.ts.map +0 -1
  68. package/dist/src/utils/safe.js.map +0 -1
  69. package/dist/src/utils/validate.d.ts.map +0 -1
  70. package/dist/src/utils/validate.js.map +0 -1
  71. /package/dist/src/{utils/safe.d.ts → safe.d.ts} +0 -0
  72. /package/dist/src/{utils/safe.js → safe.js} +0 -0
  73. /package/dist/src/{utils/validate.d.ts → validate.d.ts} +0 -0
package/README.md CHANGED
@@ -21,21 +21,49 @@ Rewrite my instruction files
21
21
  Add a rule about using early returns
22
22
  ```
23
23
 
24
- Messy or voice-transcribed input can be restructured into a clear task hierarchy using the `refine-prompt` tool.
24
+ Messy or voice-transcribed input can be restructured into a clear task hierarchy using the prompt tools.
25
25
 
26
26
  ## Tools
27
27
 
28
28
  For the theory behind the plugin, see [Theoretical Foundation](#theoretical-foundation).
29
29
 
30
- ### rewrite-instructions
30
+ The plugin provides 7 tools organized into two pipelines.
31
31
 
32
- Rewrites all matched instruction files through the parse/format pipeline. Discovers files from the `instructions` array in your `opencode.json`. Accepts an optional `mode` (`verbose`, `balanced`, or `concise`, default `balanced`) and an optional `files` string of comma-separated paths to process specific files instead of running discovery.
32
+ ### Rules Pipeline
33
+
34
+ Discovers, parses, formats, and writes instruction rules. The LLM drives each step.
35
+
36
+ ```
37
+ discover-rules -> parse-rules -> format-rules -> rewrite-rules
38
+ -> add-rules
39
+ ```
40
+
41
+ #### discover-rules
42
+
43
+ Reads instruction files from your `opencode.json` configuration. Accepts an optional `files` string of comma-separated paths to read specific files instead of running discovery.
44
+
45
+ #### parse-rules
46
+
47
+ Parses instruction file content or unstructured user input into structured rules JSON. Validates the parsed rules against the schema and returns validated JSON. Call after `discover-rules` and before `format-rules`.
48
+
49
+ #### format-rules
50
+
51
+ Converts parsed rules into human-readable formatted rule strings. Accepts an optional `mode` (`verbose`, `balanced`, or `concise`, default `balanced`). Validates the formatted rules and returns validated JSON. Call after `parse-rules` and before `rewrite-rules` or `add-rules`.
52
+
53
+ #### rewrite-rules
54
+
55
+ Writes formatted rule strings to instruction files, replacing existing content. Accepts an optional `mode` and an optional `files` string of comma-separated paths. Call after `format-rules`.
56
+
57
+ #### add-rules
58
+
59
+ Appends formatted rule strings to an instruction file without rewriting existing content. Accepts an optional `mode` and an optional `file` path (defaults to the first discovered instruction file). Call after `format-rules`.
60
+
61
+ ### Formatting Modes
33
62
 
34
63
  ```
35
- rewrite-instructions
36
- rewrite-instructions [mode=concise]
37
- rewrite-instructions [files=fixtures/testing.md]
38
- rewrite-instructions [files=a.md,b.md, mode=verbose]
64
+ rewrite-rules [mode=concise]
65
+ rewrite-rules [files=a.md,b.md, mode=verbose]
66
+ add-rules [mode=concise]
39
67
  ```
40
68
 
41
69
  **Input:**
@@ -48,59 +76,52 @@ functions provide lexical this binding and a more compact syntax.
48
76
 
49
77
  **verbose** - Full Rule/Reason pairs for every rule.
50
78
  ```
51
- Rule: Always use return await when returning promises from async functions.
79
+ Rule: Use return await when returning promises from async functions.
52
80
  Reason: Provides better stack traces and error handling.
53
81
 
54
82
  Rule: Use arrow functions as the standard function syntax.
55
83
  Reason: Arrow functions provide lexical this binding and a more compact syntax.
56
84
 
57
- Rule: Never use function declarations or function expressions.
85
+ Rule: Do not use function declarations or function expressions.
58
86
  Reason: Arrow functions are the standard syntax for the project.
59
87
  ```
60
88
 
61
89
  **balanced** (default) - The LLM decides which rules need reasons.
62
90
  ```
63
- Rule: Always use return await when returning promises from async functions.
91
+ Rule: Use return await when returning promises from async functions.
64
92
  Reason: Provides better stack traces and error handling.
65
93
 
66
94
  Rule: Use arrow functions as the standard function syntax.
67
95
 
68
- Rule: Never use function declarations or function expressions.
96
+ Rule: Do not use function declarations or function expressions.
69
97
  Reason: Arrow functions provide lexical this binding and a more compact syntax.
70
98
  ```
71
99
 
72
100
  **concise** - Bullet list of directives only, no reasons.
73
101
  ```
74
- - Always use return await when returning promises from async functions.
102
+ - Use return await when returning promises from async functions.
75
103
  - Use arrow functions as the standard function syntax.
76
- - Never use function declarations or function expressions.
104
+ - Do not use function declarations or function expressions.
77
105
  ```
78
106
 
79
- ### add-instruction
107
+ ### Prompt Pipeline
80
108
 
81
- Appends new rules to the end of an instruction file without rewriting existing content. Takes an `input` string of unstructured rule text to parse, format, and append. Accepts an optional `file` path (defaults to the first discovered instruction file) and an optional `mode` (`verbose`, `balanced`, or `concise`, default `balanced`).
109
+ Restructures messy or unstructured user input into a clear task hierarchy.
82
110
 
83
111
  ```
84
- add-instruction [input=Always use early returns]
85
- add-instruction [input=Use early returns, mode=concise]
86
- add-instruction [input=Use early returns, file=docs/rules.md]
112
+ parse-prompt -> format-prompt
87
113
  ```
88
114
 
89
- ### automatic-rule
115
+ #### parse-prompt
90
116
 
91
- Detects when the user corrects the agent or expresses a coding preference, extracts the implicit rule, and appends it to the instruction file. This tool is invoked automatically by the LLM, not by the user. Takes an `input` string of the user's correction or feedback. Accepts an optional `file` path (defaults to the first discovered instruction file).
117
+ Decomposes raw text (often from voice transcription) into structured tasks with intent, targets, constraints, context, and recursive subtasks. Validates against the schema and returns validated JSON.
92
118
 
93
- ```
94
- automatic-rule [input=Don't use semicolons in this project]
95
- automatic-rule [input=I prefer early returns, file=docs/rules.md]
96
- ```
97
-
98
- ### refine-prompt
119
+ #### format-prompt
99
120
 
100
- Restructures messy or unstructured user input into a clear task hierarchy. Takes an `input` string of raw text (often from voice transcription) and decomposes it into structured tasks with intent, targets, constraints, context, and recursive subtasks.
121
+ Renders validated tasks from `parse-prompt` into a formatted markdown tree view.
101
122
 
102
123
  ```
103
- refine-prompt [input=refactor the search module add guards to each provider make sure bsky and wiki get validated then run the tests]
124
+ parse-prompt [input=refactor the search module add guards to each provider make sure bsky and wiki get validated then run the tests]
104
125
  ```
105
126
 
106
127
  Output:
@@ -147,6 +168,18 @@ type ParsedRule = {
147
168
  }
148
169
  ```
149
170
 
171
+ The `strength` field maps to deontic operators. The critical relationship is F(A) = O(not-A): a forbidden action must be negated in expression.
172
+
173
+ | Strength | Operator | Expression |
174
+ |---|---|---|
175
+ | obligatory | O(A) | positive imperative: "use consistent whitespace" |
176
+ | forbidden | F(A) = O(not-A) | negate with "do not": "do not use non-null assertions" |
177
+ | permissible | P(A) | prefix with "may": "may use type assertions when necessary" |
178
+ | optional | P(A) and P(not-A) | prefix with "may choose to": "may choose to add commit body" |
179
+ | supererogatory | beyond O(A) | prefix with "ideally": "ideally provide comprehensive documentation" |
180
+ | indifferent | P(A) and P(not-A) | prefix with "either way is fine": "either way is fine for naming style" |
181
+ | omissible | P(not-A) | prefix with "may omit": "may omit post-task explanations" |
182
+
150
183
  ### Prompt Formatting (action/planning logic, performative directives)
151
184
 
152
185
  Prompts request a specific one-shot action. They are not standing rules but immediate instructions. The formal framework is closer to [action languages](https://en.wikipedia.org/wiki/Action_language) from AI planning (STRIPS, ADL, HTN): what the goal is, what must be true before acting, and what changes after.
package/dist/sat.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sat.d.ts","sourceRoot":"","sources":["../sat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAGjD,QAAA,MAAM,MAAM,EAAE,MAqDb,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"sat.d.ts","sourceRoot":"","sources":["../sat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAWjD,QAAA,MAAM,MAAM,EAAE,MAyGb,CAAA;AAED,eAAe,MAAM,CAAA"}
package/dist/sat.js CHANGED
@@ -1,9 +1,11 @@
1
- import { createAppendTool, createDiscoverTool, createRefineTool, createRewriteTool } from "./src/tools.js";
2
- const plugin = async ({ directory }) => {
1
+ import { DEONTIC_STRENGTHS, MODE_FORMATS, NEGATION_SIGNALS } from "./src/tools/descriptions.js";
2
+ import { createFormatPromptTool, createParsePromptTool } from "./src/tools/prompts.js";
3
+ import { createAddTool, createDiscoverTool, createFormatRulesTool, createParseRulesTool, createRewriteTool, } from "./src/tools/rules.js";
4
+ const plugin = async ({ directory, client }) => {
3
5
  const discovered = new Set();
4
6
  return {
5
7
  tool: {
6
- 'discover-instructions': createDiscoverTool({
8
+ 'discover-rules': createDiscoverTool({
7
9
  directory,
8
10
  discovered,
9
11
  description: [
@@ -12,38 +14,87 @@ const plugin = async ({ directory }) => {
12
14
  '- Optionally accept a files parameter to read specific files instead of running discovery.',
13
15
  ].join('\n'),
14
16
  }),
15
- 'rewrite-instructions': createRewriteTool({
17
+ 'parse-rules': createParseRulesTool({
18
+ description: [
19
+ '- Parse instruction file content or unstructured user input into structured rules JSON.',
20
+ '- The rules parameter is required and must be a JSON string matching the schema described in the parameter.',
21
+ '- Validates the parsed rules against the schema and returns the validated JSON.',
22
+ '- Call this tool AFTER discover-rules and BEFORE format-rules.',
23
+ '',
24
+ 'Extract each rule into: strength, action (verb), target (object), context (optional condition), reason.',
25
+ 'Each parsed rule must correspond to the original instruction without adding extra details.',
26
+ '',
27
+ 'Detect deontic strength from input signals:',
28
+ NEGATION_SIGNALS,
29
+ '',
30
+ 'Strength determines enforcement:',
31
+ DEONTIC_STRENGTHS,
32
+ ].join('\n'),
33
+ }),
34
+ 'format-rules': createFormatRulesTool({
35
+ description: [
36
+ '- Convert parsed rules from parse-rules into human-readable formatted rule strings.',
37
+ '- Express deontic strength naturally: obligatory as positive imperative, forbidden as negated imperative (do not), permissible as "may".',
38
+ '- Optionally accept a mode parameter (verbose, balanced, or concise) to control formatting.',
39
+ '- Default to balanced mode when no mode is specified.',
40
+ '- The rules parameter is required and must be a JSON string matching the schema described in the parameter.',
41
+ '- Validates the formatted rules and returns the validated JSON.',
42
+ '- Call this tool AFTER parse-rules and BEFORE rewrite-rules or add-rules.',
43
+ '',
44
+ 'Strength determines how the rule is expressed:',
45
+ DEONTIC_STRENGTHS,
46
+ '',
47
+ 'CRITICAL: forbidden + action "use" MUST produce "do not use ...", never "use ...".',
48
+ '',
49
+ 'Output format per mode:',
50
+ MODE_FORMATS,
51
+ '',
52
+ 'For verbose and balanced modes, each rule string must include "Rule: " prefix and "\\nReason: " suffix.',
53
+ 'For concise mode, use "- " prefix with directive only, no reasons.',
54
+ ].join('\n'),
55
+ }),
56
+ 'rewrite-rules': createRewriteTool({
57
+ client,
16
58
  directory,
17
59
  discovered,
18
60
  description: [
19
- '- Discover instruction files from opencode.json configuration.',
20
- '- Parse discovered instruction files into structured rules.',
21
- '- Format structured rules into human-readable rules.',
22
- '- Write formatted rules back to the original instruction files.',
61
+ '- Write formatted rule strings from format-rules to instruction files, replacing existing content.',
62
+ '- The rules parameter is required and must be a JSON string matching the schema described in the parameter.',
23
63
  '- Optionally accept a mode parameter (verbose, balanced, or concise) to control formatting.',
24
64
  '- Default to balanced mode when no mode is specified.',
25
- '- Optionally accept a files parameter to process specific files instead of running discovery.',
65
+ '- Optionally accept a files parameter to process specific files instead of discovering from opencode.json.',
66
+ '- Call this tool AFTER format-rules.',
26
67
  ].join('\n'),
27
68
  }),
28
- 'add-instruction': createAppendTool({
69
+ 'add-rules': createAddTool({
70
+ client,
29
71
  directory,
30
72
  discovered,
31
73
  description: [
32
- '- Parse unstructured input into structured rules.',
33
- '- Format parsed rules after parsing unstructured input into structured rules.',
34
- '- Append formatted rules to the instruction file without rewriting existing content.',
35
- '- Optionally accept a mode parameter (verbose, balanced, or concise).',
36
- '- Default mode to balanced when no mode parameter is specified.',
74
+ '- Append formatted rule strings from format-rules to an instruction file without rewriting existing content.',
75
+ '- The rules parameter is required and must be a JSON string matching the schema described in the parameter.',
76
+ '- Optionally accept a mode parameter (verbose, balanced, or concise) to control formatting.',
77
+ '- Default to balanced mode when no mode is specified.',
37
78
  '- Optionally accept a file parameter to specify the target instruction file.',
38
79
  '- Append to the first discovered instruction file when no file parameter is specified.',
80
+ '- Call this tool AFTER format-rules.',
81
+ ].join('\n'),
82
+ }),
83
+ 'parse-prompt': createParsePromptTool({
84
+ description: [
85
+ '- Decompose messy, ambiguous, or voice-transcribed user input into a structured task hierarchy.',
86
+ '- The tasks parameter is required and must be a JSON string matching the schema described in the parameter.',
87
+ '- Validates the parsed tasks against the schema and returns the validated JSON.',
88
+ '- Call this tool BEFORE format-prompt.',
39
89
  ].join('\n'),
40
90
  }),
41
- 'refine-prompt': createRefineTool({
91
+ 'format-prompt': createFormatPromptTool({
92
+ client,
42
93
  description: [
43
- '- Restructure messy, ambiguous, or voice-transcribed user input before starting work when the message is vague, run-on, contains multiple interleaved requests, or reads like unpunctuated speech.',
44
- '- Invoke this tool BEFORE starting work on vague, run-on, multi-request, or speech-like user messages.',
45
- '- Decompose the input into a hierarchical task breakdown when restructuring user input.',
46
- '- Return formatted markdown after decomposing the input.',
94
+ '- Render validated tasks from parse-prompt into a formatted markdown tree view.',
95
+ '- The tasks parameter is required and must be a JSON string matching the schema described in the parameter.',
96
+ '- Return formatted markdown after rendering the task tree.',
97
+ '- Call this tool AFTER parse-prompt.',
47
98
  ].join('\n'),
48
99
  }),
49
100
  },
package/dist/sat.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sat.js","sourceRoot":"","sources":["../sat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAE1G,MAAM,MAAM,GAAW,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IAEpC,OAAO;QACL,IAAI,EAAE;YACJ,uBAAuB,EAAE,kBAAkB,CAAC;gBAC1C,SAAS;gBACT,UAAU;gBACV,WAAW,EAAE;oBACX,gEAAgE;oBAChE,0EAA0E;oBAC1E,4FAA4F;iBAC7F,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;YAEF,sBAAsB,EAAE,iBAAiB,CAAC;gBACxC,SAAS;gBACT,UAAU;gBACV,WAAW,EAAE;oBACX,gEAAgE;oBAChE,6DAA6D;oBAC7D,sDAAsD;oBACtD,iEAAiE;oBACjE,6FAA6F;oBAC7F,uDAAuD;oBACvD,+FAA+F;iBAChG,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;YAEF,iBAAiB,EAAE,gBAAgB,CAAC;gBAClC,SAAS;gBACT,UAAU;gBACV,WAAW,EAAE;oBACX,mDAAmD;oBACnD,+EAA+E;oBAC/E,sFAAsF;oBACtF,uEAAuE;oBACvE,iEAAiE;oBACjE,8EAA8E;oBAC9E,wFAAwF;iBACzF,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;YAEF,eAAe,EAAE,gBAAgB,CAAC;gBAChC,WAAW,EAAE;oBACX,oMAAoM;oBACpM,wGAAwG;oBACxG,yFAAyF;oBACzF,0DAA0D;iBAC3D,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;SACH;KACF,CAAA;AACH,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"sat.js","sourceRoot":"","sources":["../sat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC/F,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACtF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,sBAAsB,CAAA;AAE7B,MAAM,MAAM,GAAW,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;IACrD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IAEpC,OAAO;QACL,IAAI,EAAE;YACJ,gBAAgB,EAAE,kBAAkB,CAAC;gBACnC,SAAS;gBACT,UAAU;gBACV,WAAW,EAAE;oBACX,gEAAgE;oBAChE,0EAA0E;oBAC1E,4FAA4F;iBAC7F,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;YAEF,aAAa,EAAE,oBAAoB,CAAC;gBAClC,WAAW,EAAE;oBACX,yFAAyF;oBACzF,6GAA6G;oBAC7G,iFAAiF;oBACjF,gEAAgE;oBAChE,EAAE;oBACF,yGAAyG;oBACzG,4FAA4F;oBAC5F,EAAE;oBACF,6CAA6C;oBAC7C,gBAAgB;oBAChB,EAAE;oBACF,kCAAkC;oBAClC,iBAAiB;iBAClB,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;YAEF,cAAc,EAAE,qBAAqB,CAAC;gBACpC,WAAW,EAAE;oBACX,qFAAqF;oBACrF,0IAA0I;oBAC1I,6FAA6F;oBAC7F,uDAAuD;oBACvD,6GAA6G;oBAC7G,iEAAiE;oBACjE,2EAA2E;oBAC3E,EAAE;oBACF,gDAAgD;oBAChD,iBAAiB;oBACjB,EAAE;oBACF,oFAAoF;oBACpF,EAAE;oBACF,yBAAyB;oBACzB,YAAY;oBACZ,EAAE;oBACF,yGAAyG;oBACzG,oEAAoE;iBACrE,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;YAEF,eAAe,EAAE,iBAAiB,CAAC;gBACjC,MAAM;gBACN,SAAS;gBACT,UAAU;gBACV,WAAW,EAAE;oBACX,oGAAoG;oBACpG,6GAA6G;oBAC7G,6FAA6F;oBAC7F,uDAAuD;oBACvD,4GAA4G;oBAC5G,sCAAsC;iBACvC,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;YAEF,WAAW,EAAE,aAAa,CAAC;gBACzB,MAAM;gBACN,SAAS;gBACT,UAAU;gBACV,WAAW,EAAE;oBACX,8GAA8G;oBAC9G,6GAA6G;oBAC7G,6FAA6F;oBAC7F,uDAAuD;oBACvD,8EAA8E;oBAC9E,wFAAwF;oBACxF,sCAAsC;iBACvC,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;YAEF,cAAc,EAAE,qBAAqB,CAAC;gBACpC,WAAW,EAAE;oBACX,iGAAiG;oBACjG,6GAA6G;oBAC7G,iFAAiF;oBACjF,wCAAwC;iBACzC,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;YAEF,eAAe,EAAE,sBAAsB,CAAC;gBACtC,MAAM;gBACN,WAAW,EAAE;oBACX,iFAAiF;oBACjF,6GAA6G;oBAC7G,4DAA4D;oBAC5D,sCAAsC;iBACvC,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;SACH;KACF,CAAA;AACH,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -1,5 +1,3 @@
1
- import { type FormatMode } from './format.ts';
2
- import type { ParsedRule } from './rule-schema.ts';
3
1
  type AppendResultSuccess = {
4
2
  status: 'success';
5
3
  path: string;
@@ -18,8 +16,7 @@ type AppendResultWriteError = {
18
16
  export type AppendResult = AppendResultSuccess | AppendResultReadError | AppendResultWriteError;
19
17
  type AppendRulesOptions = {
20
18
  filePath: string;
21
- rules: Array<ParsedRule>;
22
- mode: FormatMode;
19
+ rules: Array<string>;
23
20
  };
24
21
  export declare const appendRules: (options: AppendRulesOptions) => Promise<AppendResult>;
25
22
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"append.d.ts","sourceRoot":"","sources":["../../src/append.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGlD,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,WAAW,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,YAAY,GACpB,mBAAmB,GACnB,qBAAqB,GACrB,sBAAsB,CAAA;AAE1B,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IACxB,IAAI,EAAE,UAAU,CAAA;CACjB,CAAA;AAyBD,eAAO,MAAM,WAAW,GAAU,SAAS,kBAAkB,KAAG,OAAO,CAAC,YAAY,CAiCnF,CAAA"}
1
+ {"version":3,"file":"append.d.ts","sourceRoot":"","sources":["../../src/append.ts"],"names":[],"mappings":"AAGA,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,WAAW,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,qBAAqB,GAAG,sBAAsB,CAAA;AAE/F,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CACrB,CAAA;AAkBD,eAAO,MAAM,WAAW,GAAU,SAAS,kBAAkB,KAAG,OAAO,CAAC,YAAY,CA6BnF,CAAA"}
@@ -1,16 +1,9 @@
1
1
  import { readFile, writeFile } from 'node:fs/promises';
2
- import { formatRules } from "./format.js";
3
- import { safeAsync } from "./utils/safe.js";
4
- const computeSeparator = (existing, mode) => {
2
+ import { safeAsync } from "./safe.js";
3
+ const computeSeparator = (existing) => {
5
4
  if (existing.length === 0) {
6
5
  return '';
7
6
  }
8
- if (mode === 'concise') {
9
- if (existing.endsWith('\n')) {
10
- return '';
11
- }
12
- return '\n';
13
- }
14
7
  if (existing.endsWith('\n\n')) {
15
8
  return '';
16
9
  }
@@ -28,12 +21,9 @@ export const appendRules = async (options) => {
28
21
  error: readResult.error.message,
29
22
  };
30
23
  }
31
- const formatted = formatRules({
32
- rules: options.rules,
33
- mode: options.mode,
34
- });
24
+ const formatted = options.rules.join('\n\n') + '\n';
35
25
  const existing = readResult.data;
36
- const separator = computeSeparator(existing, options.mode);
26
+ const separator = computeSeparator(existing);
37
27
  const content = existing + separator + formatted;
38
28
  const writeResult = await safeAsync(() => writeFile(options.filePath, content, 'utf-8'));
39
29
  if (writeResult.error) {
@@ -1 +1 @@
1
- {"version":3,"file":"append.js","sourceRoot":"","sources":["../../src/append.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAmB,WAAW,EAAE,MAAM,aAAa,CAAA;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AA+B3C,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,IAAgB,EAAU,EAAE;IACtE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,OAA2B,EAAyB,EAAE;IACtF,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7E,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO;SAChC,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAA;IAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;IAEhD,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IACxF,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO;YACL,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO;SACjC,CAAA;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,OAAO,CAAC,QAAQ;QACtB,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;KACjC,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"append.js","sourceRoot":"","sources":["../../src/append.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AA2BrC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,OAA2B,EAAyB,EAAE;IACtF,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7E,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO;SAChC,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAA;IAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;IAEhD,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IACxF,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO;YACL,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO;SACjC,CAAA;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,OAAO,CAAC,QAAQ;QACtB,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;KACjC,CAAA;AACH,CAAC,CAAA"}
@@ -1,3 +1,4 @@
1
+ import type { FileResult } from './rewrite.ts';
1
2
  export type ComparisonResult = {
2
3
  file: string;
3
4
  originalBytes: number;
@@ -20,4 +21,5 @@ export type TableRow = {
20
21
  comparison?: ComparisonResult;
21
22
  };
22
23
  export declare const buildTable: (rows: TableRow[]) => string;
24
+ export declare const toTableRow: (result: FileResult) => TableRow;
23
25
  //# sourceMappingURL=compare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/compare.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAGD,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,EAAE,WAAW,MAAM,KAAG,gBAahF,CAAA;AAQD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAGD,eAAO,MAAM,SAAS,GAAI,SAAS,gBAAgB,EAAE,KAAG,iBAYvD,CAAA;AAqBD,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAGD,eAAO,MAAM,UAAU,GAAI,MAAM,QAAQ,EAAE,KAAG,MA0E7C,CAAA;AAOD,eAAO,MAAM,UAAU,GAAI,QAAQ,UAAU,KAAG,QAgB/C,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import Table from 'cli-table3';
2
+ import { basename } from 'node:path';
2
3
  // compare byte sizes of two strings and return diff stats
3
4
  export const compareBytes = (file, original, generated) => {
4
5
  const originalBytes = new TextEncoder().encode(original).length;
@@ -115,4 +116,23 @@ export const buildTable = (rows) => {
115
116
  + '%)';
116
117
  return lines.join('\n') + '\n\n' + summary;
117
118
  };
119
+ const ERROR_LABELS = {
120
+ readError: 'Read failed',
121
+ writeError: 'Write failed',
122
+ };
123
+ export const toTableRow = (result) => {
124
+ if (result.status === 'success') {
125
+ return {
126
+ file: basename(result.path),
127
+ status: 'Success',
128
+ rules: result.rulesCount,
129
+ comparison: result.comparison,
130
+ };
131
+ }
132
+ const label = ERROR_LABELS[result.status] || result.status;
133
+ return {
134
+ file: basename(result.path),
135
+ status: label,
136
+ };
137
+ };
118
138
  //# sourceMappingURL=compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/compare.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type Result } from './utils/safe';
1
+ import { type Result } from './safe.ts';
2
2
  export type InstructionFile = {
3
3
  path: string;
4
4
  content: string;
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/discover.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,cAAc,CAAA;AAE3D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,KAAK,cAAc,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,CAAA;AAoF/C,eAAO,MAAM,aAAa,GAAU,WAAW,MAAM,EAAE,OAAO,MAAM,EAAE,KAAG,OAAO,CAAC,eAAe,EAAE,CAGjG,CAAA;AAED,eAAO,MAAM,QAAQ,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,cAAc,CAsBxE,CAAA"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/discover.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,WAAW,CAAA;AAExD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,KAAK,cAAc,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,CAAA;AAoF/C,eAAO,MAAM,aAAa,GAAU,WAAW,MAAM,EAAE,OAAO,MAAM,EAAE,KAAG,OAAO,CAAC,eAAe,EAAE,CAGjG,CAAA;AAED,eAAO,MAAM,QAAQ,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,cAAc,CAsBxE,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { glob, readFile } from 'node:fs/promises';
2
2
  import { join, resolve } from 'node:path';
3
- import { safe, safeAsync } from './utils/safe';
3
+ import { safe, safeAsync } from "./safe.js";
4
4
  const readConfig = async (directory) => {
5
5
  const configPath = join(directory, 'opencode.json');
6
6
  const readResult = await safeAsync(() => readFile(configPath, 'utf-8'));
@@ -18,7 +18,7 @@ const readConfig = async (directory) => {
18
18
  };
19
19
  }
20
20
  const instructions = parseResult.data.instructions;
21
- if (!instructions || !Array.isArray(instructions) || instructions.length === 0) {
21
+ if (!Array.isArray(instructions) || instructions.length === 0) {
22
22
  return {
23
23
  data: null,
24
24
  error: 'No "instructions" array found in ' + configPath,
@@ -36,7 +36,7 @@ const readConfig = async (directory) => {
36
36
  error: null,
37
37
  };
38
38
  };
39
- const resolveFiles = async (directory, patterns) => {
39
+ const matchPatterns = async (directory, patterns) => {
40
40
  const seen = new Set();
41
41
  const files = [];
42
42
  for (const pattern of patterns) {
@@ -83,7 +83,7 @@ export const discover = async (directory) => {
83
83
  };
84
84
  }
85
85
  const patterns = config.data;
86
- const files = await resolveFiles(directory, patterns);
86
+ const files = await matchPatterns(directory, patterns);
87
87
  if (files.length === 0) {
88
88
  return {
89
89
  data: null,
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/discover.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"format-prompt.d.ts","sourceRoot":"","sources":["../../src/format-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,oBAAoB,CAAA;AAoHlE,eAAO,MAAM,YAAY,GAAI,QAAQ,YAAY,KAAG,MA8BnD,CAAA"}
1
+ {"version":3,"file":"format-prompt.d.ts","sourceRoot":"","sources":["../../src/format-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,oBAAoB,CAAA;AAoHlE,eAAO,MAAM,YAAY,GAAI,QAAQ,YAAY,KAAG,MAmCnD,CAAA"}
@@ -90,9 +90,13 @@ export const formatPrompt = (parsed) => {
90
90
  return lines.join('\n');
91
91
  }
92
92
  const flat = flatten(nodes);
93
+ const first = flat[0];
94
+ if (!first) {
95
+ return '';
96
+ }
93
97
  const root = {
94
- label: flat[0]?.label ?? '',
95
- metaLines: flat[0]?.metaLines ?? [],
98
+ label: first.label,
99
+ metaLines: first.metaLines,
96
100
  children: flat.slice(1),
97
101
  };
98
102
  const rootPrefix = root.children.length > 0 ? '┌ ' : '';
@@ -1 +1 @@
1
- {"version":3,"file":"format-prompt.js","sourceRoot":"","sources":["../../src/format-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format-prompt.js","sourceRoot":"","sources":["../../src/format-prompt.ts"],"names":[],"mappings":"AAeA,MAAM,SAAS,GAAG,CAAC,OAAyB,EAAY,EAAE;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;IACxE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IAEvB,MAAM,SAAS,GAAkB,EAAE,CAAA;IAEnC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACjE,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,SAAS,CAAC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,SAAS,CAAC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACrD,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;AACvC,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,KAAsB,EAAmB,EAAE;IAC1D,MAAM,MAAM,GAAoB,EAAE,CAAA;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;QAE3E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAQD,MAAM,UAAU,GAAG,CAAC,OAAsB,EAAiB,EAAE;IAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAA;IACrD,MAAM,KAAK,GAAkB,CAAC,SAAS,CAAC,CAAA;IAExC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IAChD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IACpC,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEhF,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,CAAA;QAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YACtC,IAAI,CAAC,KAAK;gBAAE,SAAQ;YAEpB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,CAAA;YACvC,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;YACrD,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;YAElD,IAAI,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;YACtC,SAAS,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;YAE3C,IAAI,YAAY,GAAG,EAAE,CAAA;YACrB,IAAI,MAAM,IAAI,gBAAgB,EAAE,CAAC;gBAC/B,YAAY,GAAG,KAAK,CAAA;YACtB,CAAC;iBAAM,IAAI,MAAM,EAAE,CAAC;gBAClB,YAAY,GAAG,MAAM,CAAA;YACvB,CAAC;iBAAM,IAAI,gBAAgB,EAAE,CAAC;gBAC5B,YAAY,GAAG,KAAK,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,MAAM,CAAA;YACvB,CAAC;YAED,MAAM,UAAU,GAAG,UAAU,CAAC;gBAC5B,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,OAAO,CAAC,WAAW,GAAG,SAAS;gBACvC,WAAW,EAAE,OAAO,CAAC,WAAW,GAAG,YAAY;aAChD,CAAC,CAAA;YAEF,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAoB,EAAU,EAAE;IAC3D,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,OAAO,GAAY,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IACtE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAA;IAEpC,IAAI,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,KAAK,GAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;QACzB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IAErB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,IAAI,GAAa;QACrB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACxB,CAAA;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,OAAO,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACnF,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { PluginInput } from '@opencode-ai/plugin';
2
+ type SendResultOptions = {
3
+ client: PluginInput['client'];
4
+ sessionID: string;
5
+ text: string;
6
+ };
7
+ export declare const sendResult: (options: SendResultOptions) => Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=notify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../../src/opencode/notify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,iBAAiB,kBAY1D,CAAA"}
@@ -0,0 +1,14 @@
1
+ export const sendResult = async (options) => {
2
+ await options.client.session.prompt({
3
+ path: { id: options.sessionID },
4
+ body: {
5
+ noReply: true,
6
+ parts: [{
7
+ type: 'text',
8
+ text: options.text,
9
+ ignored: true,
10
+ }],
11
+ },
12
+ });
13
+ };
14
+ //# sourceMappingURL=notify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notify.js","sourceRoot":"","sources":["../../../src/opencode/notify.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,OAA0B,EAAE,EAAE;IAC7D,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE;QAC/B,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO,EAAE,IAAI;iBACd,CAAC;SACH;KACF,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -7,9 +7,6 @@ export declare const ParsedTaskSchema: z.ZodType<ParsedTask>;
7
7
  export declare const ParsedPromptSchema: z.ZodObject<{
8
8
  tasks: z.ZodArray<z.ZodType<ParsedTask, unknown, z.core.$ZodTypeInternals<ParsedTask, unknown>>>;
9
9
  }, z.core.$strip>;
10
- export declare const FormattedPromptSchema: z.ZodObject<{
11
- prompt: z.ZodString;
12
- }, z.core.$strip>;
13
10
  export type ParsedTask = {
14
11
  intent: string;
15
12
  targets: Array<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-schema.d.ts","sourceRoot":"","sources":["../../src/prompt-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,YAAY,aACgC,CAAA;AAEzD,eAAO,MAAM,iBAAiB,yBACmB,CAAA;AAEjD,eAAO,MAAM,iBAAiB,yBACyB,CAAA;AAEvD,eAAO,MAAM,iBAAiB,aAC0B,CAAA;AAExD,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAOkB,CAAA;AAErE,eAAO,MAAM,kBAAkB;;iBAE7B,CAAA;AAEF,eAAO,MAAM,qBAAqB;;iBAEhC,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACtB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,eAAO,MAAM,mBAAmB,QAQ9B,CAAA"}
1
+ {"version":3,"file":"prompt-schema.d.ts","sourceRoot":"","sources":["../../src/prompt-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,YAAY,aACgC,CAAA;AAEzD,eAAO,MAAM,iBAAiB,yBACmB,CAAA;AAEjD,eAAO,MAAM,iBAAiB,yBACyB,CAAA;AAEvD,eAAO,MAAM,iBAAiB,aAC0B,CAAA;AAExD,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAOkB,CAAA;AAErE,eAAO,MAAM,kBAAkB;;iBAE7B,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACtB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,eAAO,MAAM,mBAAmB,QAQ9B,CAAA"}
@@ -18,9 +18,6 @@ export const ParsedTaskSchema = z.object({
18
18
  export const ParsedPromptSchema = z.object({
19
19
  tasks: z.array(ParsedTaskSchema),
20
20
  });
21
- export const FormattedPromptSchema = z.object({
22
- prompt: z.string().describe('Human-readable restructured prompt'),
23
- });
24
21
  export const promptSchemaExample = JSON.stringify({
25
22
  tasks: [{
26
23
  intent: IntentSchema.description || 'directive',
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-schema.js","sourceRoot":"","sources":["../../src/prompt-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE;KACnC,QAAQ,CAAC,4CAA4C,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACjD,QAAQ,CAAC,oCAAoC,CAAC,CAAA;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACjD,QAAQ,CAAC,0CAA0C,CAAC,CAAA;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE;KACxC,QAAQ,CAAC,2CAA2C,CAAC,CAAA;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAA0B,CAAC,CAAC,MAAM,CAAC;IAC9D,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC9D,CAAC;KACC,QAAQ,CAAC,wDAAwD,CAAC,CAAA;AAErE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;CACjC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAClE,CAAC,CAAA;AAYF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC;IAChD,KAAK,EAAE,CAAC;YACN,MAAM,EAAE,YAAY,CAAC,WAAW,IAAI,WAAW;YAC/C,OAAO,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,IAAI,gBAAgB,CAAC;YACpE,WAAW,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,IAAI,aAAa,CAAC;YACrE,OAAO,EAAE,iBAAiB,CAAC,WAAW,IAAI,qBAAqB;YAC/D,QAAQ,EAAE,EAAE;SACb,CAAC;CACH,CAAC,CAAA"}
1
+ {"version":3,"file":"prompt-schema.js","sourceRoot":"","sources":["../../src/prompt-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE;KACnC,QAAQ,CAAC,4CAA4C,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACjD,QAAQ,CAAC,oCAAoC,CAAC,CAAA;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACjD,QAAQ,CAAC,0CAA0C,CAAC,CAAA;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE;KACxC,QAAQ,CAAC,2CAA2C,CAAC,CAAA;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAA0B,CAAC,CAAC,MAAM,CAAC;IAC9D,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC9D,CAAC;KACC,QAAQ,CAAC,wDAAwD,CAAC,CAAA;AAErE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;CACjC,CAAC,CAAA;AAYF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC;IAChD,KAAK,EAAE,CAAC;YACN,MAAM,EAAE,YAAY,CAAC,WAAW,IAAI,WAAW;YAC/C,OAAO,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,IAAI,gBAAgB,CAAC;YACpE,WAAW,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,IAAI,aAAa,CAAC;YACrE,OAAO,EAAE,iBAAiB,CAAC,WAAW,IAAI,qBAAqB;YAC/D,QAAQ,EAAE,EAAE;SACb,CAAC;CACH,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
1
  import type { InstructionFile } from './discover.ts';
2
- import type { Result } from './utils/safe.ts';
2
+ import type { Result } from './safe.ts';
3
3
  export declare const resolveFiles: (directory: string, filesArg?: string) => Promise<Result<InstructionFile[]>>;
4
4
  //# sourceMappingURL=resolve.d.ts.map