@wrongstack/core 0.313.0 → 0.313.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 (182) hide show
  1. package/dist/chronicle/index.js +84 -6391
  2. package/dist/chronicle/project-server.js +84 -4868
  3. package/dist/chunk-2BUUIMQB.js +225 -0
  4. package/dist/chunk-2FK4WTFF.js +207 -0
  5. package/dist/chunk-2FQL4PDC.js +292 -0
  6. package/dist/chunk-2KKODIQU.js +2256 -0
  7. package/dist/chunk-2YU4WVBW.js +134 -0
  8. package/dist/chunk-3E244UDA.js +356 -0
  9. package/dist/chunk-3XPVB7BA.js +135 -0
  10. package/dist/chunk-4LJJYBAU.js +388 -0
  11. package/dist/chunk-4VWO3ZXL.js +342 -0
  12. package/dist/chunk-4XV6IR37.js +187 -0
  13. package/dist/chunk-4ZHTKJHM.js +183 -0
  14. package/dist/chunk-52RTVH4M.js +361 -0
  15. package/dist/chunk-57GEWK5X.js +26 -0
  16. package/dist/chunk-5DSMEVA4.js +931 -0
  17. package/dist/chunk-5RP3QTRL.js +1223 -0
  18. package/dist/chunk-5S437PRC.js +50 -0
  19. package/dist/chunk-5XDUGTKN.js +511 -0
  20. package/dist/chunk-62V2AFVG.js +422 -0
  21. package/dist/chunk-65RDIOR2.js +2470 -0
  22. package/dist/chunk-6AKOTGLM.js +597 -0
  23. package/dist/chunk-7ZHZE5EO.js +28 -0
  24. package/dist/chunk-A455ATZB.js +140 -0
  25. package/dist/chunk-AD7ZFZCS.js +46 -0
  26. package/dist/chunk-AI4LLQ2U.js +856 -0
  27. package/dist/chunk-ASX6AW36.js +789 -0
  28. package/dist/chunk-AT4V4XGI.js +3522 -0
  29. package/dist/chunk-AWNQ6ED6.js +311 -0
  30. package/dist/chunk-B4AMLZPB.js +9 -0
  31. package/dist/chunk-BAKVJLEV.js +417 -0
  32. package/dist/chunk-BJHVULHO.js +55 -0
  33. package/dist/chunk-CB2HFKTP.js +9 -0
  34. package/dist/chunk-CE4ZOCOI.js +1640 -0
  35. package/dist/chunk-CQQL4ZOQ.js +151 -0
  36. package/dist/chunk-DEIQMBD2.js +65 -0
  37. package/dist/chunk-E6I5RXVK.js +58 -0
  38. package/dist/chunk-EFEHDQGY.js +1589 -0
  39. package/dist/chunk-EODDVJBM.js +82 -0
  40. package/dist/chunk-EPC3GZD4.js +308 -0
  41. package/dist/chunk-FAYRX2AD.js +13 -0
  42. package/dist/chunk-FFSX2QDQ.js +362 -0
  43. package/dist/chunk-FHAMQS7Q.js +5856 -0
  44. package/dist/chunk-FIV4IJL7.js +2263 -0
  45. package/dist/chunk-FNXVT7HF.js +52 -0
  46. package/dist/chunk-FSWCWSTS.js +395 -0
  47. package/dist/chunk-FW5LDDMJ.js +16464 -0
  48. package/dist/chunk-FXQLIX3K.js +211 -0
  49. package/dist/chunk-G5AAKEEZ.js +228 -0
  50. package/dist/chunk-G5S3S5ZN.js +38 -0
  51. package/dist/chunk-GAZEWQEZ.js +231 -0
  52. package/dist/chunk-GFJOMSHG.js +125 -0
  53. package/dist/chunk-GFXZTHNI.js +158 -0
  54. package/dist/chunk-GM54GJBU.js +960 -0
  55. package/dist/chunk-GPQ3NJPR.js +900 -0
  56. package/dist/chunk-GTCU6DZ3.js +1 -0
  57. package/dist/chunk-H5E77KUJ.js +15 -0
  58. package/dist/chunk-H72H4XDU.js +1023 -0
  59. package/dist/chunk-HA4ZYA6T.js +178 -0
  60. package/dist/chunk-I45KAW2N.js +5020 -0
  61. package/dist/chunk-IQ35HMQL.js +1396 -0
  62. package/dist/chunk-IYFBFX34.js +86 -0
  63. package/dist/chunk-JJPMWPB6.js +109 -0
  64. package/dist/chunk-JTHKOYWU.js +663 -0
  65. package/dist/chunk-JVGPR3TS.js +365 -0
  66. package/dist/chunk-JVKB2TBL.js +48 -0
  67. package/dist/chunk-JX7VBZDK.js +31 -0
  68. package/dist/chunk-K3G6JBUC.js +5232 -0
  69. package/dist/chunk-K4YUNKU7.js +589 -0
  70. package/dist/chunk-KBZGE6LN.js +710 -0
  71. package/dist/chunk-KDQJCT2J.js +45 -0
  72. package/dist/chunk-KI4L2DUL.js +560 -0
  73. package/dist/chunk-KJ2ZTQSL.js +47 -0
  74. package/dist/chunk-KSJ5UTP7.js +154 -0
  75. package/dist/chunk-LHOA5DWA.js +28 -0
  76. package/dist/chunk-LX5QWLBL.js +27 -0
  77. package/dist/chunk-LZDDLNCZ.js +279 -0
  78. package/dist/chunk-M2WF6AXG.js +115 -0
  79. package/dist/chunk-M7BS2K6U.js +1 -0
  80. package/dist/chunk-NDBIPFNY.js +102 -0
  81. package/dist/chunk-NEMIWEXC.js +1199 -0
  82. package/dist/chunk-NFAYHPRH.js +323 -0
  83. package/dist/chunk-O37BQ65S.js +21 -0
  84. package/dist/chunk-O74MJHXU.js +187 -0
  85. package/dist/chunk-OJZEX73F.js +112 -0
  86. package/dist/chunk-PAAWLLZX.js +74 -0
  87. package/dist/chunk-PFXFQQRT.js +339 -0
  88. package/dist/chunk-PFZO3C6H.js +14 -0
  89. package/dist/chunk-PHH7LD45.js +113 -0
  90. package/dist/chunk-QRTG4XTI.js +188 -0
  91. package/dist/chunk-QVOVMXJR.js +1351 -0
  92. package/dist/chunk-RCQYT2I4.js +757 -0
  93. package/dist/chunk-RD6DEE36.js +1178 -0
  94. package/dist/chunk-RJIZEJ42.js +30 -0
  95. package/dist/chunk-RPOA7IAE.js +150 -0
  96. package/dist/chunk-SN2DQRL6.js +1172 -0
  97. package/dist/chunk-SQJVFEBV.js +41 -0
  98. package/dist/chunk-SQP64RCS.js +5391 -0
  99. package/dist/chunk-SVT4RNTR.js +49 -0
  100. package/dist/chunk-SWUFN7XM.js +43 -0
  101. package/dist/chunk-SXMVYC5H.js +174 -0
  102. package/dist/chunk-SZ6AYUIZ.js +23 -0
  103. package/dist/chunk-T3KGZBU5.js +3171 -0
  104. package/dist/chunk-TBRL2RCC.js +9 -0
  105. package/dist/chunk-TRT2HRWZ.js +18 -0
  106. package/dist/chunk-TYW2GI5I.js +1077 -0
  107. package/dist/chunk-UIWONWVG.js +4959 -0
  108. package/dist/chunk-VB3H5WWB.js +151 -0
  109. package/dist/chunk-W4A6QA3D.js +258 -0
  110. package/dist/chunk-WBPVKEEE.js +227 -0
  111. package/dist/chunk-WEBMSQP2.js +123 -0
  112. package/dist/chunk-WOEZV3Q4.js +333 -0
  113. package/dist/chunk-WQQON3SV.js +473 -0
  114. package/dist/chunk-WQTOVMGV.js +119 -0
  115. package/dist/chunk-WZO23AWO.js +2779 -0
  116. package/dist/chunk-XBDP4QPW.js +7 -0
  117. package/dist/chunk-XEBHSJLT.js +103 -0
  118. package/dist/chunk-XQ2ECNK3.js +1 -0
  119. package/dist/chunk-XQ2XGIBF.js +2086 -0
  120. package/dist/chunk-Y2GE5TSI.js +355 -0
  121. package/dist/chunk-YBUJCZ57.js +351 -0
  122. package/dist/chunk-YNCVSFGF.js +149 -0
  123. package/dist/chunk-YUPMXOGP.js +282 -0
  124. package/dist/chunk-YY6APYUM.js +49 -0
  125. package/dist/chunk-Z2IJUO45.js +691 -0
  126. package/dist/chunk-ZEHUCJHY.js +129 -0
  127. package/dist/chunk-ZYU2YOJ6.js +1496 -0
  128. package/dist/chunk-ZZ4V3WIZ.js +163 -0
  129. package/dist/coordination/agents/index.js +145 -6260
  130. package/dist/coordination/index.js +365 -34324
  131. package/dist/coordination/mailbox-project-server.js +48 -3276
  132. package/dist/coordination/provider-status-tracker.d.ts +4 -0
  133. package/dist/core/agent.d.ts +14 -1
  134. package/dist/core/index.js +267 -12480
  135. package/dist/core/model-ref.js +5 -23
  136. package/dist/core/provider-runner.d.ts +36 -1
  137. package/dist/design/index.js +50 -1087
  138. package/dist/execution/index.d.ts +1 -1
  139. package/dist/execution/index.js +1599 -21888
  140. package/dist/execution/prompt-enhancer.js +16 -535
  141. package/dist/execution/retry-policy.d.ts +31 -1
  142. package/dist/extension/index.js +7 -311
  143. package/dist/goal/index.js +33 -3435
  144. package/dist/hooks/index.js +14 -1138
  145. package/dist/hq/index.js +112 -5139
  146. package/dist/hq/protocol.js +21 -668
  147. package/dist/index.js +1410 -92656
  148. package/dist/infrastructure/index.js +64 -4811
  149. package/dist/kernel/events/provider-events.d.ts +15 -0
  150. package/dist/kernel/index.js +14 -992
  151. package/dist/models/index.js +40 -1117
  152. package/dist/notifications/index.js +3 -108
  153. package/dist/observability/index.js +17 -279
  154. package/dist/plugin/index.js +584 -14835
  155. package/dist/prompts/index.js +14 -948
  156. package/dist/registry/index.js +9 -822
  157. package/dist/registry-R23UBE7H.js +14 -0
  158. package/dist/replay/index.js +6 -84
  159. package/dist/review-finding-store-DKAV3AS6.js +21 -0
  160. package/dist/review-report-store-OWY3EC3N.js +19 -0
  161. package/dist/security/index.js +114 -2202
  162. package/dist/session-catalog/index.js +36 -2103
  163. package/dist/session-catalog/project-server.js +42 -1435
  164. package/dist/skills/index.js +35 -1578
  165. package/dist/storage/index.js +182 -15600
  166. package/dist/tasking/index.js +10 -676
  167. package/dist/tools/index.js +52 -9590
  168. package/dist/types/config/autonomy.d.ts +5 -0
  169. package/dist/types/config/ui.d.ts +1 -1
  170. package/dist/types/errors.d.ts +18 -0
  171. package/dist/types/index.js +121 -1342
  172. package/dist/types/provider-runner.d.ts +8 -0
  173. package/dist/types/session-markers.js +8 -144
  174. package/dist/utils/error.js +3 -4
  175. package/dist/utils/expect-defined.js +3 -9
  176. package/dist/utils/heap-watchdog.js +6 -706
  177. package/dist/utils/index.js +269 -5685
  178. package/dist/utils/sage-output-block.js +5 -42
  179. package/dist/wiring/proxy-rewrite.d.ts +18 -0
  180. package/dist/wiring/proxy-rewrite.js +18 -121
  181. package/dist/worktree/index.js +6 -887
  182. package/package.json +4 -4
@@ -0,0 +1,151 @@
1
+ import {
2
+ ensureProjectGitignore
3
+ } from "./chunk-4XV6IR37.js";
4
+
5
+ // src/utils/config-backup.ts
6
+ import * as fs from "node:fs/promises";
7
+ import * as path from "node:path";
8
+ function configHistoryDir(globalRoot) {
9
+ return path.join(globalRoot, "config-history");
10
+ }
11
+ function configSlug(absolutePath, globalRoot) {
12
+ const rel = path.relative(globalRoot, absolutePath);
13
+ const normalized = rel.replace(/\\/g, "/").replace(/\.json$/i, "");
14
+ return normalized.replace(/\//g, "-");
15
+ }
16
+ async function backupConfigFile(filePath, paths) {
17
+ let currentContent;
18
+ try {
19
+ currentContent = await fs.readFile(filePath, "utf8");
20
+ if (!currentContent.trim()) return;
21
+ } catch {
22
+ return;
23
+ }
24
+ const now = /* @__PURE__ */ new Date();
25
+ const ts = now.toISOString().replace(/[:.]/g, "-").replace(/Z$/, "");
26
+ const slug = configSlug(filePath, paths.globalRoot);
27
+ const backupDir = configHistoryDir(paths.globalRoot);
28
+ const backupFile = path.join(backupDir, `${slug}-${ts}.json`);
29
+ try {
30
+ await fs.mkdir(backupDir, { recursive: true });
31
+ await fs.writeFile(backupFile, currentContent, { mode: 384, encoding: "utf8" });
32
+ } catch {
33
+ }
34
+ }
35
+
36
+ // src/utils/project-state-guard.ts
37
+ import * as fs2 from "node:fs";
38
+ import * as fsp from "node:fs/promises";
39
+ import * as path2 from "node:path";
40
+ var PROJECT_STATE_DIRECTORY = ".wrongstack";
41
+ var DEFAULT_POLL_INTERVAL_MS = 1e3;
42
+ var REPAIR_DEBOUNCE_MS = 25;
43
+ var ACTIVE_GUARD_KEY = /* @__PURE__ */ Symbol.for("wrongstack.activeProjectStateGuard");
44
+ var globalScope = globalThis;
45
+ globalScope[ACTIVE_GUARD_KEY] ??= {};
46
+ var activeGuard = globalScope[ACTIVE_GUARD_KEY];
47
+ function normalizedRoot(root) {
48
+ const resolved = path2.resolve(root);
49
+ return process.platform === "win32" ? resolved.toLowerCase() : resolved;
50
+ }
51
+ function concernsProjectState(filename) {
52
+ if (filename === null) return true;
53
+ const firstSegment = String(filename).replaceAll("\\", "/").split("/")[0];
54
+ return firstSegment?.toLowerCase() === PROJECT_STATE_DIRECTORY;
55
+ }
56
+ async function startProjectStateGuard(projectRoot, options = {}) {
57
+ const root = path2.resolve(projectRoot);
58
+ const directory = path2.join(root, PROJECT_STATE_DIRECTORY);
59
+ const pollIntervalMs = Math.max(25, options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS);
60
+ let closed = false;
61
+ let repairPending = false;
62
+ let repairInFlight;
63
+ let repairTimer;
64
+ const ensureDirectory = async () => {
65
+ await fsp.mkdir(directory, { recursive: true });
66
+ };
67
+ const ensureInvariant = async () => {
68
+ await ensureDirectory();
69
+ try {
70
+ await ensureProjectGitignore(root);
71
+ } catch (error) {
72
+ options.onError?.(error);
73
+ }
74
+ };
75
+ const scheduleRepair = () => {
76
+ if (closed) return;
77
+ repairPending = true;
78
+ if (repairInFlight || repairTimer) return;
79
+ repairTimer = setTimeout(() => {
80
+ repairTimer = void 0;
81
+ repairInFlight = (async () => {
82
+ while (!closed && repairPending) {
83
+ repairPending = false;
84
+ try {
85
+ const rootState = await fsp.stat(root).catch(() => void 0);
86
+ if (!rootState?.isDirectory()) return;
87
+ await ensureInvariant();
88
+ } catch (error) {
89
+ options.onError?.(error);
90
+ }
91
+ }
92
+ })().finally(() => {
93
+ repairInFlight = void 0;
94
+ if (repairPending && !closed) scheduleRepair();
95
+ });
96
+ }, REPAIR_DEBOUNCE_MS);
97
+ repairTimer.unref?.();
98
+ };
99
+ await ensureDirectory();
100
+ await ensureProjectGitignore(root).catch((error) => options.onError?.(error));
101
+ let watcher;
102
+ try {
103
+ watcher = fs2.watch(root, { persistent: false }, (_eventType, filename) => {
104
+ if (concernsProjectState(filename) || String(filename).toLowerCase() === ".gitignore") {
105
+ scheduleRepair();
106
+ }
107
+ });
108
+ watcher.on("error", (error) => {
109
+ options.onError?.(error);
110
+ watcher = void 0;
111
+ scheduleRepair();
112
+ });
113
+ } catch (error) {
114
+ options.onError?.(error);
115
+ }
116
+ const poll = setInterval(scheduleRepair, pollIntervalMs);
117
+ poll.unref?.();
118
+ return {
119
+ directory,
120
+ close() {
121
+ if (closed) return;
122
+ closed = true;
123
+ clearInterval(poll);
124
+ if (repairTimer) clearTimeout(repairTimer);
125
+ repairTimer = void 0;
126
+ try {
127
+ watcher?.close();
128
+ } catch {
129
+ }
130
+ watcher = void 0;
131
+ }
132
+ };
133
+ }
134
+ async function activateProjectStateGuard(projectRoot, options = {}) {
135
+ const root = normalizedRoot(projectRoot);
136
+ if (activeGuard.root === root && activeGuard.guard) return activeGuard.guard;
137
+ const next = await startProjectStateGuard(projectRoot, options);
138
+ const previous = activeGuard.guard;
139
+ activeGuard.root = root;
140
+ activeGuard.guard = next;
141
+ previous?.close();
142
+ return next;
143
+ }
144
+
145
+ export {
146
+ configHistoryDir,
147
+ backupConfigFile,
148
+ startProjectStateGuard,
149
+ activateProjectStateGuard
150
+ };
151
+ //# sourceMappingURL=chunk-CQQL4ZOQ.js.map
@@ -0,0 +1,65 @@
1
+ // src/utils/deep-merge.ts
2
+ var FORBIDDEN_PROTO_KEYS = /* @__PURE__ */ new Set([
3
+ "__proto__",
4
+ "constructor",
5
+ "prototype",
6
+ "__defineGetter__",
7
+ "__defineSetter__",
8
+ "__lookupGetter__",
9
+ "__lookupSetter__"
10
+ ]);
11
+ function isPrimitiveArray(a) {
12
+ return a.every((v) => v === null || typeof v !== "object" && typeof v !== "function");
13
+ }
14
+ function deepMerge(base, patch, options = {}) {
15
+ const {
16
+ conflictResolution = "prefer-patch",
17
+ arrayMode = "replace",
18
+ protectProto = true,
19
+ onNonPrimitiveArrayReplace
20
+ } = options;
21
+ if (typeof base !== "object" || base === null) {
22
+ return conflictResolution === "prefer-patch" ? patch : base;
23
+ }
24
+ if (typeof patch !== "object" || patch === null) {
25
+ return conflictResolution === "prefer-patch" ? patch : base;
26
+ }
27
+ if (Array.isArray(base) && Array.isArray(patch)) {
28
+ if (arrayMode === "concat-primitives" && isPrimitiveArray(base) && isPrimitiveArray(patch)) {
29
+ return [.../* @__PURE__ */ new Set([...base, ...patch])];
30
+ }
31
+ return conflictResolution === "prefer-patch" ? patch : base;
32
+ }
33
+ if (Array.isArray(base) || Array.isArray(patch)) {
34
+ return conflictResolution === "prefer-patch" ? patch : base;
35
+ }
36
+ const baseObj = base;
37
+ const patchObj = patch;
38
+ const out = { ...baseObj };
39
+ for (const [k, v] of Object.entries(patchObj)) {
40
+ if (protectProto && FORBIDDEN_PROTO_KEYS.has(k)) continue;
41
+ const existing = out[k];
42
+ if (v !== null && typeof v === "object" && !Array.isArray(v) && existing !== null && typeof existing === "object" && !Array.isArray(existing)) {
43
+ out[k] = deepMerge(existing, v, options);
44
+ } else if (Array.isArray(v) && Array.isArray(existing)) {
45
+ if (onNonPrimitiveArrayReplace && !isPrimitiveArray(v)) {
46
+ onNonPrimitiveArrayReplace(k, existing.length, v.length);
47
+ }
48
+ out[k] = deepMerge(existing, v, options);
49
+ } else if (v !== void 0) {
50
+ if (onNonPrimitiveArrayReplace && Array.isArray(v) && !isPrimitiveArray(v)) {
51
+ const existingLen = Array.isArray(existing) ? existing.length : 0;
52
+ onNonPrimitiveArrayReplace(k, existingLen, v.length);
53
+ }
54
+ out[k] = v;
55
+ }
56
+ }
57
+ return out;
58
+ }
59
+
60
+ export {
61
+ FORBIDDEN_PROTO_KEYS,
62
+ isPrimitiveArray,
63
+ deepMerge
64
+ };
65
+ //# sourceMappingURL=chunk-DEIQMBD2.js.map
@@ -0,0 +1,58 @@
1
+ import {
2
+ assertUnixSocketPathWithinLimit
3
+ } from "./chunk-FAYRX2AD.js";
4
+
5
+ // src/session-catalog/protocol.ts
6
+ var SESSION_CATALOG_PROTOCOL_VERSION = 1;
7
+ var SESSION_CATALOG_MAX_FRAME_CHARS = 4 * 1024 * 1024;
8
+ var SESSION_CATALOG_DEFAULT_LEASE_MS = 3e4;
9
+ var SESSION_CATALOG_DEFAULT_RESERVATION_MS = 15e3;
10
+ var SESSION_CATALOG_MAX_AGENTS = 128;
11
+ function encodeSessionCatalogMessage(message) {
12
+ return `${JSON.stringify(message)}
13
+ `;
14
+ }
15
+
16
+ // src/session-catalog/endpoint.ts
17
+ import { createHash } from "node:crypto";
18
+ import * as fs from "node:fs";
19
+ import * as os from "node:os";
20
+ import * as path from "node:path";
21
+ var SESSION_CATALOG_METADATA_FILE = ".session-catalog-server.json";
22
+ function normalizedPath(value) {
23
+ const resolved = path.resolve(value);
24
+ return process.platform === "win32" ? resolved.toLowerCase() : resolved;
25
+ }
26
+ function sessionCatalogProjectServerKey(projectDir) {
27
+ return createHash("sha256").update(normalizedPath(projectDir)).digest("hex").slice(0, 24);
28
+ }
29
+ function sessionCatalogProjectServerEndpoint(projectDir) {
30
+ const key = sessionCatalogProjectServerKey(projectDir);
31
+ if (process.platform === "win32") {
32
+ return `\\\\.\\pipe\\wrongstack-session-catalog-v${SESSION_CATALOG_PROTOCOL_VERSION}-${key}`;
33
+ }
34
+ return path.join(os.tmpdir(), `wssc-v${SESSION_CATALOG_PROTOCOL_VERSION}`, `${key}.sock`);
35
+ }
36
+ function sessionCatalogProjectServerMetadataPath(projectDir) {
37
+ return path.join(projectDir, SESSION_CATALOG_METADATA_FILE);
38
+ }
39
+ function ensureSessionCatalogSocketDirectory(endpoint) {
40
+ if (process.platform === "win32") return;
41
+ assertUnixSocketPathWithinLimit(endpoint, "session-catalog");
42
+ fs.mkdirSync(path.dirname(endpoint), { recursive: true, mode: 448 });
43
+ }
44
+
45
+ export {
46
+ SESSION_CATALOG_PROTOCOL_VERSION,
47
+ SESSION_CATALOG_MAX_FRAME_CHARS,
48
+ SESSION_CATALOG_DEFAULT_LEASE_MS,
49
+ SESSION_CATALOG_DEFAULT_RESERVATION_MS,
50
+ SESSION_CATALOG_MAX_AGENTS,
51
+ encodeSessionCatalogMessage,
52
+ SESSION_CATALOG_METADATA_FILE,
53
+ sessionCatalogProjectServerKey,
54
+ sessionCatalogProjectServerEndpoint,
55
+ sessionCatalogProjectServerMetadataPath,
56
+ ensureSessionCatalogSocketDirectory
57
+ };
58
+ //# sourceMappingURL=chunk-E6I5RXVK.js.map