@sovara/runner 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +331 -0
  3. package/dist/apiTypes.d.ts +4 -0
  4. package/dist/apiTypes.d.ts.map +1 -0
  5. package/dist/apiTypes.js +4 -0
  6. package/dist/apiTypes.js.map +1 -0
  7. package/dist/capture/requestEnvelope.d.ts +10 -0
  8. package/dist/capture/requestEnvelope.d.ts.map +1 -0
  9. package/dist/capture/requestEnvelope.js +79 -0
  10. package/dist/capture/requestEnvelope.js.map +1 -0
  11. package/dist/capture/responseEnvelope.d.ts +14 -0
  12. package/dist/capture/responseEnvelope.d.ts.map +1 -0
  13. package/dist/capture/responseEnvelope.js +43 -0
  14. package/dist/capture/responseEnvelope.js.map +1 -0
  15. package/dist/capture/sseUtils.d.ts +3 -0
  16. package/dist/capture/sseUtils.d.ts.map +1 -0
  17. package/dist/capture/sseUtils.js +69 -0
  18. package/dist/capture/sseUtils.js.map +1 -0
  19. package/dist/capture/streamCapture.d.ts +5 -0
  20. package/dist/capture/streamCapture.d.ts.map +1 -0
  21. package/dist/capture/streamCapture.js +19 -0
  22. package/dist/capture/streamCapture.js.map +1 -0
  23. package/dist/claudeAgentSdk/parseHook.d.ts +20 -0
  24. package/dist/claudeAgentSdk/parseHook.d.ts.map +1 -0
  25. package/dist/claudeAgentSdk/parseHook.js +160 -0
  26. package/dist/claudeAgentSdk/parseHook.js.map +1 -0
  27. package/dist/claudeAgentSdk/wrapper.d.ts +17 -0
  28. package/dist/claudeAgentSdk/wrapper.d.ts.map +1 -0
  29. package/dist/claudeAgentSdk/wrapper.js +219 -0
  30. package/dist/claudeAgentSdk/wrapper.js.map +1 -0
  31. package/dist/constants.d.ts +6 -0
  32. package/dist/constants.d.ts.map +1 -0
  33. package/dist/constants.js +7 -0
  34. package/dist/constants.js.map +1 -0
  35. package/dist/context.d.ts +34 -0
  36. package/dist/context.d.ts.map +1 -0
  37. package/dist/context.js +106 -0
  38. package/dist/context.js.map +1 -0
  39. package/dist/endpointPatterns.json +82 -0
  40. package/dist/endpointWhitelist.d.ts +2 -0
  41. package/dist/endpointWhitelist.d.ts.map +1 -0
  42. package/dist/endpointWhitelist.js +11 -0
  43. package/dist/endpointWhitelist.js.map +1 -0
  44. package/dist/env.d.ts +7 -0
  45. package/dist/env.d.ts.map +1 -0
  46. package/dist/env.js +10 -0
  47. package/dist/env.js.map +1 -0
  48. package/dist/index.d.ts +5 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +9 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/mcpPatch.d.ts +2 -0
  53. package/dist/mcpPatch.d.ts.map +1 -0
  54. package/dist/mcpPatch.js +195 -0
  55. package/dist/mcpPatch.js.map +1 -0
  56. package/dist/payload/editIoExcludePatterns.json +292 -0
  57. package/dist/payload/filterDict.d.ts +3 -0
  58. package/dist/payload/filterDict.d.ts.map +1 -0
  59. package/dist/payload/filterDict.js +26 -0
  60. package/dist/payload/filterDict.js.map +1 -0
  61. package/dist/payload/flatten.d.ts +6 -0
  62. package/dist/payload/flatten.d.ts.map +1 -0
  63. package/dist/payload/flatten.js +79 -0
  64. package/dist/payload/flatten.js.map +1 -0
  65. package/dist/payload/wrap.d.ts +6 -0
  66. package/dist/payload/wrap.d.ts.map +1 -0
  67. package/dist/payload/wrap.js +8 -0
  68. package/dist/payload/wrap.js.map +1 -0
  69. package/dist/priors.d.ts +7 -0
  70. package/dist/priors.d.ts.map +1 -0
  71. package/dist/priors.js +87 -0
  72. package/dist/priors.js.map +1 -0
  73. package/dist/priorsBlockGuidance.json +3 -0
  74. package/dist/projectContext.d.ts +12 -0
  75. package/dist/projectContext.d.ts.map +1 -0
  76. package/dist/projectContext.js +26 -0
  77. package/dist/projectContext.js.map +1 -0
  78. package/dist/runLogCapture.d.ts +10 -0
  79. package/dist/runLogCapture.d.ts.map +1 -0
  80. package/dist/runLogCapture.js +117 -0
  81. package/dist/runLogCapture.js.map +1 -0
  82. package/dist/runtimeClient.d.ts +103 -0
  83. package/dist/runtimeClient.d.ts.map +1 -0
  84. package/dist/runtimeClient.js +202 -0
  85. package/dist/runtimeClient.js.map +1 -0
  86. package/dist/serverLifecycle.d.ts +2 -0
  87. package/dist/serverLifecycle.d.ts.map +1 -0
  88. package/dist/serverLifecycle.js +59 -0
  89. package/dist/serverLifecycle.js.map +1 -0
  90. package/dist/sseListener.d.ts +9 -0
  91. package/dist/sseListener.d.ts.map +1 -0
  92. package/dist/sseListener.js +56 -0
  93. package/dist/sseListener.js.map +1 -0
  94. package/dist/transport/awsSdkHttp2Patch.d.ts +2 -0
  95. package/dist/transport/awsSdkHttp2Patch.d.ts.map +1 -0
  96. package/dist/transport/awsSdkHttp2Patch.js +428 -0
  97. package/dist/transport/awsSdkHttp2Patch.js.map +1 -0
  98. package/dist/transport/fetchPatch.d.ts +3 -0
  99. package/dist/transport/fetchPatch.d.ts.map +1 -0
  100. package/dist/transport/fetchPatch.js +237 -0
  101. package/dist/transport/fetchPatch.js.map +1 -0
  102. package/dist/transport/nodeHttpPatch.d.ts +3 -0
  103. package/dist/transport/nodeHttpPatch.d.ts.map +1 -0
  104. package/dist/transport/nodeHttpPatch.js +522 -0
  105. package/dist/transport/nodeHttpPatch.js.map +1 -0
  106. package/dist/user.d.ts +11 -0
  107. package/dist/user.d.ts.map +1 -0
  108. package/dist/user.js +31 -0
  109. package/dist/user.js.map +1 -0
  110. package/dist/util/logger.d.ts +2 -0
  111. package/dist/util/logger.d.ts.map +1 -0
  112. package/dist/util/logger.js +9 -0
  113. package/dist/util/logger.js.map +1 -0
  114. package/dist/util/stableJson.d.ts +2 -0
  115. package/dist/util/stableJson.d.ts.map +1 -0
  116. package/dist/util/stableJson.js +22 -0
  117. package/dist/util/stableJson.js.map +1 -0
  118. package/dist/util/stackTrace.d.ts +2 -0
  119. package/dist/util/stackTrace.d.ts.map +1 -0
  120. package/dist/util/stackTrace.js +11 -0
  121. package/dist/util/stackTrace.js.map +1 -0
  122. package/package.json +74 -0
@@ -0,0 +1,292 @@
1
+ [
2
+ {
3
+ "pattern": "^_.*"
4
+ },
5
+ {
6
+ "pattern": "^sse(\\.|$)"
7
+ },
8
+ {
9
+ "pattern": "(^|.*\\.)[^.]*encrypted[^.]*($|\\.)",
10
+ "flags": "i"
11
+ },
12
+ {
13
+ "pattern": "^url$"
14
+ },
15
+ {
16
+ "pattern": "(^|.*\\.)(?:urls)(?:\\.|$)"
17
+ },
18
+ {
19
+ "pattern": "(^|.*\\.)(?:[^.]+_url|[^.]+Url)$"
20
+ },
21
+ {
22
+ "pattern": "^max_tokens$"
23
+ },
24
+ {
25
+ "pattern": "^stream$"
26
+ },
27
+ {
28
+ "pattern": "^temperature$"
29
+ },
30
+ {
31
+ "pattern": "^metadata\\.user_id$"
32
+ },
33
+ {
34
+ "pattern": "^thinking(\\.|$)"
35
+ },
36
+ {
37
+ "pattern": "^context_management(\\.|$)"
38
+ },
39
+ {
40
+ "pattern": "^output_config\\.(?!effort$).+"
41
+ },
42
+ {
43
+ "pattern": "^body\\.metadata\\.user_id$"
44
+ },
45
+ {
46
+ "pattern": "^body\\.thinking(\\.|$)"
47
+ },
48
+ {
49
+ "pattern": "^body\\.context_management(\\.|$)"
50
+ },
51
+ {
52
+ "pattern": "^body\\.output_config\\.(?!effort$).+"
53
+ },
54
+ {
55
+ "pattern": "^body\\.stream$"
56
+ },
57
+ {
58
+ "pattern": "^body\\.contents\\.\\d+\\.parts\\.\\d+\\.thoughtSignature$"
59
+ },
60
+ {
61
+ "pattern": "^body\\.messages\\.\\d+\\.content\\.\\d+\\.signature$"
62
+ },
63
+ {
64
+ "pattern": "^body\\.inferenceConfig\\.(maxTokens|temperature)$"
65
+ },
66
+ {
67
+ "pattern": "^content\\.id$"
68
+ },
69
+ {
70
+ "pattern": "^content\\.type$"
71
+ },
72
+ {
73
+ "pattern": "^content\\.object$"
74
+ },
75
+ {
76
+ "pattern": "^content\\.created(_at)?$"
77
+ },
78
+ {
79
+ "pattern": "^content\\.completed_at$"
80
+ },
81
+ {
82
+ "pattern": "^content\\.model$"
83
+ },
84
+ {
85
+ "pattern": "^content\\.modelVersion$"
86
+ },
87
+ {
88
+ "pattern": "^content\\.status$"
89
+ },
90
+ {
91
+ "pattern": "^content\\.background$"
92
+ },
93
+ {
94
+ "pattern": "^content\\.context(\\.|$)"
95
+ },
96
+ {
97
+ "pattern": "^content\\.error$"
98
+ },
99
+ {
100
+ "pattern": "^content\\.instructions$"
101
+ },
102
+ {
103
+ "pattern": "^content\\.metadata"
104
+ },
105
+ {
106
+ "pattern": "^content\\.moderation$"
107
+ },
108
+ {
109
+ "pattern": "^content\\.request_id$"
110
+ },
111
+ {
112
+ "pattern": "^content\\.usage"
113
+ },
114
+ {
115
+ "pattern": "^content\\.service_tier$"
116
+ },
117
+ {
118
+ "pattern": "^content\\.system_fingerprint$"
119
+ },
120
+ {
121
+ "pattern": "^content\\.stop_sequence$"
122
+ },
123
+ {
124
+ "pattern": "^content\\.billing"
125
+ },
126
+ {
127
+ "pattern": "^content\\.max_output_tokens$"
128
+ },
129
+ {
130
+ "pattern": "^content\\.max_tool_calls$"
131
+ },
132
+ {
133
+ "pattern": "^content\\.createTime$"
134
+ },
135
+ {
136
+ "pattern": "^content\\.frequency_penalty$"
137
+ },
138
+ {
139
+ "pattern": "^content\\.incomplete_details(\\.|$)"
140
+ },
141
+ {
142
+ "pattern": "^content\\.parallel_tool_calls$"
143
+ },
144
+ {
145
+ "pattern": "^content\\.presence_penalty$"
146
+ },
147
+ {
148
+ "pattern": "^content\\.previous_response_id$"
149
+ },
150
+ {
151
+ "pattern": "^content\\.prompt_cache"
152
+ },
153
+ {
154
+ "pattern": "^content\\.reasoning\\.(effort|summary)$"
155
+ },
156
+ {
157
+ "pattern": "^content\\.safety_identifier$"
158
+ },
159
+ {
160
+ "pattern": "^content\\.signature$"
161
+ },
162
+ {
163
+ "pattern": "^content\\.store$"
164
+ },
165
+ {
166
+ "pattern": "^content\\.temperature$"
167
+ },
168
+ {
169
+ "pattern": "^content\\.text\\.(format\\.type|verbosity)$"
170
+ },
171
+ {
172
+ "pattern": "^content\\.tool_choice$"
173
+ },
174
+ {
175
+ "pattern": "^content\\.tools(\\.|$)"
176
+ },
177
+ {
178
+ "pattern": "^content\\.top_(logprobs|p)$"
179
+ },
180
+ {
181
+ "pattern": "^content\\.truncation$"
182
+ },
183
+ {
184
+ "pattern": "^content\\.user$"
185
+ },
186
+ {
187
+ "pattern": "^content\\.responseId$"
188
+ },
189
+ {
190
+ "pattern": "^content\\.metrics(\\.|$)"
191
+ },
192
+ {
193
+ "pattern": "^content\\.stopReason$"
194
+ },
195
+ {
196
+ "pattern": "^content\\.\\d+\\.signature$"
197
+ },
198
+ {
199
+ "pattern": "^content\\.content\\.\\d+\\.(type|id|signature)$"
200
+ },
201
+ {
202
+ "pattern": "^content\\.content\\.\\d+\\.content\\.\\d+\\.type$"
203
+ },
204
+ {
205
+ "pattern": "^content\\.choices\\.\\d+\\.index$"
206
+ },
207
+ {
208
+ "pattern": "^content\\.choices\\.\\d+\\.finish_reason$"
209
+ },
210
+ {
211
+ "pattern": "^content\\.choices\\.\\d+\\.message\\.(refusal|annotations|reasoning)$"
212
+ },
213
+ {
214
+ "pattern": "^content\\.choices\\.\\d+\\.(logprobs|seed)$"
215
+ },
216
+ {
217
+ "pattern": "^content\\.output\\.\\d+\\.(id|type|status)$"
218
+ },
219
+ {
220
+ "pattern": "^content\\.output\\.\\d+\\.content\\.\\d+\\.(type|annotations|logprobs)$"
221
+ },
222
+ {
223
+ "pattern": "^content\\.candidates\\.\\d+\\.avgLogprobs$"
224
+ },
225
+ {
226
+ "pattern": "^content\\.candidates\\.\\d+\\.(finishReason|index)$"
227
+ },
228
+ {
229
+ "pattern": "^content\\.candidates\\.\\d+\\.content\\.parts\\.\\d+\\.thoughtSignature$"
230
+ },
231
+ {
232
+ "pattern": "^content\\.usageMetadata"
233
+ },
234
+ {
235
+ "pattern": "^tools\\.\\d+\\.parameters\\.(additionalProperties|properties|required|type)$"
236
+ },
237
+ {
238
+ "pattern": "^tools\\.\\d+\\.strict$"
239
+ },
240
+ {
241
+ "pattern": "^content\\.done$"
242
+ },
243
+ {
244
+ "pattern": "^content\\.done_reason$"
245
+ },
246
+ {
247
+ "pattern": "^content\\.eval_count$"
248
+ },
249
+ {
250
+ "pattern": "^content\\.eval_duration$"
251
+ },
252
+ {
253
+ "pattern": "^content\\.load_duration$"
254
+ },
255
+ {
256
+ "pattern": "^content\\.prompt_eval_count$"
257
+ },
258
+ {
259
+ "pattern": "^content\\.prompt_eval_duration$"
260
+ },
261
+ {
262
+ "pattern": "^content\\.total_duration$"
263
+ },
264
+ {
265
+ "pattern": "^headers(\\.|$)",
266
+ "flags": "i"
267
+ },
268
+ {
269
+ "pattern": "^client_message(_type)?(\\.|$)"
270
+ },
271
+ {
272
+ "pattern": "^content\\.output_transcription_segments(\\.|$)"
273
+ },
274
+ {
275
+ "pattern": "^protocol$"
276
+ },
277
+ {
278
+ "pattern": "^server_messages(\\.|$)"
279
+ },
280
+ {
281
+ "pattern": "^setup(\\.|$)"
282
+ },
283
+ {
284
+ "pattern": "^uri$"
285
+ },
286
+ {
287
+ "pattern": "^(method|path|pool_(host|port|scheme))$"
288
+ },
289
+ {
290
+ "pattern": "^(reason|reason_phrase|request_url|status|status_code|version|version_string)$"
291
+ }
292
+ ]
@@ -0,0 +1,3 @@
1
+ export declare function shouldExcludeKey(key: string): boolean;
2
+ export declare function filterDict(input: unknown): Record<string, unknown>;
3
+ //# sourceMappingURL=filterDict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterDict.d.ts","sourceRoot":"","sources":["../../src/payload/filterDict.ts"],"names":[],"mappings":"AAiBA,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBlE"}
@@ -0,0 +1,26 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { fileURLToPath } from "node:url";
3
+ import { flatten, flattenKeepList, orderedUnflattenList } from "./flatten.js";
4
+ const patternSpec = JSON.parse(readFileSync(fileURLToPath(new URL("./editIoExcludePatterns.json", import.meta.url)), "utf8"));
5
+ const EDIT_IO_EXCLUDE_PATTERNS = patternSpec.map((entry) => new RegExp(entry.pattern, entry.flags ?? ""));
6
+ export function shouldExcludeKey(key) {
7
+ return EDIT_IO_EXCLUDE_PATTERNS.some((pattern) => pattern.test(key));
8
+ }
9
+ export function filterDict(input) {
10
+ const flat = flatten(input, ".");
11
+ const filteredEntries = Object.entries(flat).filter(([key, value]) => {
12
+ if (shouldExcludeKey(key)) {
13
+ return false;
14
+ }
15
+ if (Array.isArray(value) && value.length === 0) {
16
+ return false;
17
+ }
18
+ if (value && typeof value === "object" && !Array.isArray(value) && Object.keys(value).length === 0) {
19
+ return false;
20
+ }
21
+ return true;
22
+ });
23
+ const unflattened = orderedUnflattenList(Object.fromEntries(filteredEntries), ".");
24
+ return flattenKeepList(unflattened);
25
+ }
26
+ //# sourceMappingURL=filterDict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterDict.js","sourceRoot":"","sources":["../../src/payload/filterDict.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAI9E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CACV,aAAa,CAAC,IAAI,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvE,MAAM,CACP,CACgB,CAAC;AAEpB,MAAM,wBAAwB,GAAa,WAAW,CAAC,GAAG,CACxD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CACxD,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACnE,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnG,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,CAAC;IACnF,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function flatten(input: unknown, separator?: string): Record<string, unknown>;
2
+ export declare function unflatten(flat: Record<string, unknown>, separator?: string): Record<string, unknown>;
3
+ export declare function flattenKeepList(input: unknown): Record<string, unknown>;
4
+ export declare function convertDenseNumericDictsToLists(value: unknown): unknown;
5
+ export declare function orderedUnflattenList(flatDict: Record<string, unknown>, separator?: string): unknown;
6
+ //# sourceMappingURL=flatten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../src/payload/flatten.ts"],"names":[],"mappings":"AAMA,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,SAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKhF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,SAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEjG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6BvE;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAmCvE;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,SAAM,GAAG,OAAO,CAKhG"}
@@ -0,0 +1,79 @@
1
+ import { flatten as flatFlatten, unflatten as flatUnflatten } from "flat";
2
+ function isPlainObject(value) {
3
+ return value !== null && typeof value === "object" && !Array.isArray(value);
4
+ }
5
+ export function flatten(input, separator = ".") {
6
+ if (isPlainObject(input) || Array.isArray(input)) {
7
+ return flatFlatten(input, { delimiter: separator });
8
+ }
9
+ return {};
10
+ }
11
+ export function unflatten(flat, separator = ".") {
12
+ return flatUnflatten(flat, { delimiter: separator });
13
+ }
14
+ export function flattenKeepList(input) {
15
+ function recurse(value) {
16
+ if (isPlainObject(value)) {
17
+ const out = {};
18
+ const walk = (node, prefix) => {
19
+ for (const [key, child] of Object.entries(node)) {
20
+ const path = prefix ? `${prefix}.${key}` : key;
21
+ if (Array.isArray(child)) {
22
+ out[path] = child.map((item) => recurse(item));
23
+ }
24
+ else if (isPlainObject(child)) {
25
+ walk(child, path);
26
+ }
27
+ else {
28
+ out[path] = child;
29
+ }
30
+ }
31
+ };
32
+ walk(value, "");
33
+ return out;
34
+ }
35
+ if (Array.isArray(value)) {
36
+ return value.map((item) => recurse(item));
37
+ }
38
+ return value;
39
+ }
40
+ const result = recurse(input);
41
+ return isPlainObject(result) ? result : {};
42
+ }
43
+ export function convertDenseNumericDictsToLists(value) {
44
+ if (Array.isArray(value)) {
45
+ return value.map((item) => convertDenseNumericDictsToLists(item));
46
+ }
47
+ if (!isPlainObject(value)) {
48
+ return value;
49
+ }
50
+ const converted = {};
51
+ for (const [key, child] of Object.entries(value)) {
52
+ converted[key] = convertDenseNumericDictsToLists(child);
53
+ }
54
+ const keys = Object.keys(converted);
55
+ if (keys.length === 0) {
56
+ return converted;
57
+ }
58
+ const numericIndexes = [];
59
+ for (const key of keys) {
60
+ if (!/^\d+$/.test(key)) {
61
+ return converted;
62
+ }
63
+ numericIndexes.push(Number(key));
64
+ }
65
+ numericIndexes.sort((a, b) => a - b);
66
+ for (let i = 0; i < numericIndexes.length; i += 1) {
67
+ if (numericIndexes[i] !== i) {
68
+ return converted;
69
+ }
70
+ }
71
+ return numericIndexes.map((index) => converted[String(index)]);
72
+ }
73
+ export function orderedUnflattenList(flatDict, separator = ".") {
74
+ if (Object.keys(flatDict).length === 0) {
75
+ return {};
76
+ }
77
+ return convertDenseNumericDictsToLists(unflatten(flatDict, separator));
78
+ }
79
+ //# sourceMappingURL=flatten.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../src/payload/flatten.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type StorageEnvelope<T = unknown> = {
2
+ raw: T;
3
+ to_show: Record<string, unknown>;
4
+ };
5
+ export declare function wrapForStorage<T>(raw: T): StorageEnvelope<T>;
6
+ //# sourceMappingURL=wrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/payload/wrap.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,OAAO,IAAI;IACzC,GAAG,EAAE,CAAC,CAAC;IACP,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAK5D"}
@@ -0,0 +1,8 @@
1
+ import { filterDict } from "./filterDict.js";
2
+ export function wrapForStorage(raw) {
3
+ return {
4
+ raw,
5
+ to_show: filterDict(raw),
6
+ };
7
+ }
8
+ //# sourceMappingURL=wrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../src/payload/wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAO7C,MAAM,UAAU,cAAc,CAAI,GAAM;IACtC,OAAO;QACL,GAAG;QACH,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC;KACzB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { PriorRecord } from "./runtimeClient.js";
2
+ export type InjectPriorsMethod = "retrieve" | "all" | "none";
3
+ export declare function renderPriorsBlock(priors: PriorRecord[], options?: {
4
+ manual?: boolean;
5
+ }): string;
6
+ export declare function injectPriors(path?: string | null, context?: unknown, method?: InjectPriorsMethod): Promise<string>;
7
+ //# sourceMappingURL=priors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priors.d.ts","sourceRoot":"","sources":["../src/priors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUtD,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AAE7D,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,MAAM,CA6BR;AAaD,wBAAsB,YAAY,CAChC,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,OAAO,GAAE,OAAc,EACvB,MAAM,GAAE,kBAA+B,GACtC,OAAO,CAAC,MAAM,CAAC,CAsDjB"}
package/dist/priors.js ADDED
@@ -0,0 +1,87 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { fileURLToPath } from "node:url";
3
+ import { getCurrentRunScope } from "./context.js";
4
+ import { warnOnce } from "./util/logger.js";
5
+ const PRIORS_BLOCK_GUIDANCE = JSON.parse(readFileSync(fileURLToPath(new URL("./priorsBlockGuidance.json", import.meta.url)), "utf8")).guidance;
6
+ export function renderPriorsBlock(priors, options = {}) {
7
+ if (priors.length === 0) {
8
+ return "";
9
+ }
10
+ const manifest = {
11
+ priors: priors
12
+ .filter((prior) => typeof prior.prior_id === "string" && prior.prior_id.length > 0)
13
+ .map((prior) => ({ prior_id: prior.prior_id })),
14
+ };
15
+ if (options.manual) {
16
+ manifest.manual = true;
17
+ }
18
+ const blocks = priors
19
+ .map((prior) => {
20
+ const heading = prior.title ?? prior.name ?? prior.prior_id ?? "Untitled";
21
+ const body = prior.content ?? "";
22
+ return `## ${heading}\n${body}`;
23
+ })
24
+ .join("\n\n");
25
+ return ("<sovara-priors>\n" +
26
+ `<!-- ${JSON.stringify(manifest)} -->\n` +
27
+ `${PRIORS_BLOCK_GUIDANCE}\n\n` +
28
+ `${blocks}\n` +
29
+ "</sovara-priors>");
30
+ }
31
+ function stringifyContext(context) {
32
+ if (typeof context === "string") {
33
+ return context;
34
+ }
35
+ try {
36
+ return JSON.stringify(context, null, 2);
37
+ }
38
+ catch {
39
+ return String(context);
40
+ }
41
+ }
42
+ export async function injectPriors(path = null, context = null, method = "retrieve") {
43
+ if (method === "none") {
44
+ return "";
45
+ }
46
+ const scope = getCurrentRunScope();
47
+ if (!scope) {
48
+ warnOnce("injectPriors:no-active-run", "[sovara] injectPriors() called outside of withSovaraRun(); returning empty context.");
49
+ return "";
50
+ }
51
+ const { client } = scope;
52
+ try {
53
+ if (method === "retrieve") {
54
+ if (context === null || context === undefined) {
55
+ throw new Error("context is required when method='retrieve'");
56
+ }
57
+ if (!client.retrievePriors) {
58
+ return "";
59
+ }
60
+ const { priors } = await client.retrievePriors({
61
+ runId: scope.runId,
62
+ path,
63
+ context: stringifyContext(context),
64
+ });
65
+ return renderPriorsBlock(priors, { manual: true });
66
+ }
67
+ if (method === "all") {
68
+ if (!client.queryPriors) {
69
+ return "";
70
+ }
71
+ const { priors } = await client.queryPriors({ runId: scope.runId, path });
72
+ return renderPriorsBlock(priors, { manual: true });
73
+ }
74
+ throw new Error(`Unknown method: ${method}`);
75
+ }
76
+ catch (error) {
77
+ if (error instanceof Error && error.message.startsWith("context is required")) {
78
+ throw error;
79
+ }
80
+ if (error instanceof Error && error.message.startsWith("Unknown method:")) {
81
+ throw error;
82
+ }
83
+ warnOnce("injectPriors:fetch-failed", `[sovara] injectPriors() failed: ${error instanceof Error ? error.message : String(error)}`);
84
+ return "";
85
+ }
86
+ }
87
+ //# sourceMappingURL=priors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priors.js","sourceRoot":"","sources":["../src/priors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "guidance": "These retrieved priors are mandatory operating constraints for the current task when relevant. Because they were retrieved for this prompt, assume they are relevant unless there is a clear reason they do not apply. Before answering, identify internally which priors apply and use them to shape the response. If a relevant prior conflicts with your default reasoning, source phrasing, or broader habits, follow the prior unless the user explicitly asks otherwise. Do not add content or framing that weakens, bypasses, or contradicts a relevant prior."
3
+ }
@@ -0,0 +1,12 @@
1
+ import type { RuntimeClient } from "./runtimeClient.js";
2
+ export type ProjectContext = {
3
+ projectId: string;
4
+ projectName: string;
5
+ projectDescription: string;
6
+ projectRoot: string;
7
+ };
8
+ export declare function resolveProjectContext(client: Pick<RuntimeClient, "resolveProjectLocation">, cwd: string, overrides?: {
9
+ name?: string;
10
+ description?: string;
11
+ }): Promise<ProjectContext>;
12
+ //# sourceMappingURL=projectContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectContext.d.ts","sourceRoot":"","sources":["../src/projectContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAMF,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,wBAAwB,CAAC,EACrD,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAClD,OAAO,CAAC,cAAc,CAAC,CA6BzB"}
@@ -0,0 +1,26 @@
1
+ function suggestedInitCommand(projectRoot) {
2
+ return `so-cli init --project-root ${JSON.stringify(projectRoot)} --project-name <project-name>`;
3
+ }
4
+ export async function resolveProjectContext(client, cwd, overrides) {
5
+ const payload = await client.resolveProjectLocation(cwd);
6
+ const status = payload.status;
7
+ if (status === "missing") {
8
+ throw new Error(`Sovara project setup is missing for ${cwd}. Run \`${suggestedInitCommand(cwd)}\` and retry.`);
9
+ }
10
+ const project = payload.project;
11
+ const projectRoot = payload.project_root;
12
+ if (!project ||
13
+ typeof project.project_id !== "string" ||
14
+ typeof project.name !== "string" ||
15
+ typeof projectRoot !== "string") {
16
+ throw new Error("Invalid project payload from server.");
17
+ }
18
+ return {
19
+ projectId: project.project_id,
20
+ projectName: overrides?.name ?? project.name,
21
+ projectDescription: overrides?.description ??
22
+ (typeof project.description === "string" ? project.description : ""),
23
+ projectRoot,
24
+ };
25
+ }
26
+ //# sourceMappingURL=projectContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectContext.js","sourceRoot":"","sources":["../src/projectContext.ts"],"names":[],"mappings":"AASA,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,OAAO,8BAA8B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,gCAAgC,CAAC;AACnG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAqD,EACrD,GAAW,EACX,SAAmD;IAEnD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,uCAAuC,GAAG,WAAW,oBAAoB,CAAC,GAAG,CAAC,eAAe,CAC9F,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAA8C,CAAC;IACvE,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IACzC,IACE,CAAC,OAAO;QACR,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;QACtC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAChC,OAAO,WAAW,KAAK,QAAQ,EAC/B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,WAAW,EAAE,SAAS,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI;QAC5C,kBAAkB,EAChB,SAAS,EAAE,WAAW;YACtB,CAAC,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ type AppendCallback = (runId: string, chunk: string) => void;
2
+ type InstallOptions = {
3
+ runId: string;
4
+ onAppend: AppendCallback;
5
+ flushIntervalMs?: number;
6
+ resolveRunId?: () => string | undefined;
7
+ };
8
+ export declare function installRunLogCapture(options: InstallOptions): () => void;
9
+ export {};
10
+ //# sourceMappingURL=runLogCapture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runLogCapture.d.ts","sourceRoot":"","sources":["../src/runLogCapture.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7D,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC;AAyIF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,IAAI,CAmBxE"}