@gobing-ai/spur 0.3.42 → 0.3.44
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/config/templates/AGENTS.md +5 -0
- package/config/workflows/idea-pipeline.yaml +205 -33
- package/config/workflows/task-pipeline.yaml +11 -1
- package/package.json +9 -9
- package/plugins/sp/commands/dev-run.md +3 -3
- package/plugins/sp/commands/dev-runall.md +9 -4
- package/plugins/sp/commands/dev-wrap.md +21 -3
- package/plugins/sp/commands/dev-wrapall.md +21 -3
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/skills/code-implementation/SKILL.md +27 -0
- package/plugins/sp/skills/issue-finding/SKILL.md +21 -3
- package/plugins/sp/skills/issue-finding/references/session-formats.md +30 -0
- package/plugins/sp/skills/next-router/references/routing-table.md +2 -2
- package/plugins/sp/skills/parallel-execution/references/dispatch-surface.md +9 -0
- package/plugins/sp/skills/spur-cli/SKILL.md +3 -0
- package/plugins/sp/skills/spur-cli/references/features/hierarchy-mece.md +8 -3
- package/plugins/sp/skills/spur-cli/references/tasks.md +25 -1
- package/plugins/sp/skills/spur-dev/SKILL.md +12 -4
- package/plugins/sp/skills/spur-dev/references/cross-cutting.md +22 -6
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +13 -13
- package/plugins/sp/skills/spur-dev/references/execution-batch.md +76 -4
- package/plugins/sp/skills/spur-dev/references/execution-workflow.md +4 -2
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +2 -2
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +43 -11
- package/plugins/sp/skills/spur-dev/references/planning-workflow.md +53 -0
- package/spur.js +529 -290
- package/web/_astro/{BoardApp.8sc6Rb1t.js → BoardApp.BnhkWEOG.js} +99 -99
- package/web/_astro/BoardApp.CxOS4HSo.js +1 -0
- package/web/_astro/{TaskDetail.DOKJP-Kp.js → TaskDetail.B6yiT-U7.js} +1 -1
- package/web/_astro/{arc.CTqmqspU.js → arc.PbmgYm3_.js} +1 -1
- package/web/_astro/{architectureDiagram-3BPJPVTR.B0iBdehs.js → architectureDiagram-3BPJPVTR.BkOMSdmD.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.BHE5UFj5.js → blockDiagram-GPEHLZMM.BtomoUdy.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.DQApkgGM.js → c4Diagram-AAUBKEIU.UzrYwJnF.js} +1 -1
- package/web/_astro/channel.DRRsElzO.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.fPrKLM8v.js → chunk-2J33WTMH.nNChLHkw.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.DExvwBhn.js → chunk-4BX2VUAB.DLYAecPo.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.EjNkjuD6.js → chunk-55IACEB6.t5bzuj1J.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.Dl8xy5rT.js → chunk-727SXJPM.DBV62bIy.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.BSzMBgBs.js → chunk-AQP2D5EJ.BdaPhTPs.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.CAeOHpbb.js → chunk-FMBD7UC4.eoZ88KMf.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM.Bbeu_ZOH.js → chunk-ND2GUHAM.QdNDyeSh.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.Da_GaIAZ.js → chunk-QZHKN3VN.DPaToLfx.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.sMfFYSQp.js → classDiagram-4FO5ZUOK.By9BMe7b.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.sMfFYSQp.js → classDiagram-v2-Q7XG4LA2.By9BMe7b.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.PS3IwOH4.js → cose-bilkent-S5V4N54A.DMypl6q_.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.EQCx8a6D.js → dagre-BM42HDAG.p26m9grg.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.aEFQl8v8.js → diagram-2AECGRRQ.C6m3oTIu.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.jyN4tqFX.js → diagram-5GNKFQAL.JCxivn2z.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.DaTVHnme.js → diagram-KO2AKTUF.DifbEd3P.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.DWsGRLAN.js → diagram-LMA3HP47.Bffga-cf.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.DYxmOViu.js → diagram-OG6HWLK6.CUKx5_Cx.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.BKM75coa.js → erDiagram-TEJ5UH35.DaJ9KZR0.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.B7qpqDW5.js → flowDiagram-I6XJVG4X.Do6l5pzg.js} +1 -1
- package/web/_astro/{ganttDiagram-6RSMTGT7.CYBL-hwy.js → ganttDiagram-6RSMTGT7.DqBKgB-3.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.Cz4ly3Kq.js → gitGraphDiagram-PVQCEYII.B3VLSQ22.js} +1 -1
- package/web/_astro/{index.yAse9IaO.css → index.QfZ9SC3X.css} +1 -1
- package/web/_astro/{infoDiagram-5YYISTIA.CIS7cXrJ.js → infoDiagram-5YYISTIA.hK8ZC1oa.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.DQ-pmaOG.js → ishikawaDiagram-YF4QCWOH.C8DXwh9Z.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.DVS6F7UM.js → journeyDiagram-JHISSGLW.mj5aHQDb.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.D8t-G-U6.js → kanban-definition-UN3LZRKU.Dwlhi49r.js} +1 -1
- package/web/_astro/{linear.IO8rTd_n.js → linear.7zBHdlwl.js} +1 -1
- package/web/_astro/{mermaid.core.CjVnvFNf.js → mermaid.core.AYdA0EJr.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.DZoEMTnU.js → mindmap-definition-RKZ34NQL.BSnniHEq.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.86r1QWnX.js → pieDiagram-4H26LBE5.B7EVpA3J.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.DzFA9uPk.js → quadrantDiagram-W4KKPZXB.rg4i8YOY.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.dQvdvfMr.js → requirementDiagram-4Y6WPE33.C4pr792x.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.BvC-VNI8.js → sankeyDiagram-5OEKKPKP.DTXU996O.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.DDQNwHs8.js → sequenceDiagram-3UESZ5HK.D73DOjzi.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.BKwYy-tQ.js → stateDiagram-AJRCARHV.CVkeSaEH.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.KxCiRYYf.js → stateDiagram-v2-BHNVJYJU.DkBGwoN5.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.Bh9NDjOx.js → timeline-definition-PNZ67QCA.DnJ9Yh7G.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.DIM-n6us.js → vennDiagram-CIIHVFJN.DN1tvR4Y.js} +1 -1
- package/web/_astro/{wardley-L42UT6IY.DW15qOFQ.js → wardley-L42UT6IY.D54jJ-7-.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.UTIvjsG9.js → wardleyDiagram-YWT4CUSO.C2grUBbE.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.CQYhkVDS.js → xychartDiagram-2RQKCTM6.D05okBnV.js} +1 -1
- package/web/index.html +2 -2
- package/web/_astro/BoardApp.ChKnY1JD.js +0 -1
- package/web/_astro/channel.B0q9WGrH.js +0 -1
package/spur.js
CHANGED
|
@@ -47,7 +47,7 @@ var __export = (target, all) => {
|
|
|
47
47
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
48
48
|
var __require = import.meta.require;
|
|
49
49
|
|
|
50
|
-
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.
|
|
50
|
+
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.27/node_modules/@gobing-ai/ts-utils/dist/errors.js
|
|
51
51
|
var ErrorCode;
|
|
52
52
|
var init_errors = __esm(() => {
|
|
53
53
|
ErrorCode = {
|
|
@@ -58,7 +58,7 @@ var init_errors = __esm(() => {
|
|
|
58
58
|
};
|
|
59
59
|
});
|
|
60
60
|
|
|
61
|
-
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.
|
|
61
|
+
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.27/node_modules/@gobing-ai/ts-utils/dist/api-response.js
|
|
62
62
|
var API_ERROR_CODES, ERROR_CODE_TO_HTTP, CLIENT_SAFE_CODES;
|
|
63
63
|
var init_api_response = __esm(() => {
|
|
64
64
|
init_errors();
|
|
@@ -81,10 +81,10 @@ var init_api_response = __esm(() => {
|
|
|
81
81
|
CLIENT_SAFE_CODES = new Set([ErrorCode.NotFound, ErrorCode.Validation, ErrorCode.Conflict]);
|
|
82
82
|
});
|
|
83
83
|
|
|
84
|
-
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.
|
|
84
|
+
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.27/node_modules/@gobing-ai/ts-utils/dist/cursor.js
|
|
85
85
|
var init_cursor = () => {};
|
|
86
86
|
|
|
87
|
-
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.
|
|
87
|
+
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.27/node_modules/@gobing-ai/ts-utils/dist/object.js
|
|
88
88
|
function isPlainObject(value) {
|
|
89
89
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
90
90
|
}
|
|
@@ -102,7 +102,7 @@ function deepMerge(target, source) {
|
|
|
102
102
|
return result;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.
|
|
105
|
+
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.27/node_modules/@gobing-ai/ts-utils/dist/output.js
|
|
106
106
|
function processStream(name) {
|
|
107
107
|
const proc = globalThis.process;
|
|
108
108
|
const stream = proc?.[name];
|
|
@@ -123,7 +123,7 @@ function echoError(message, target = defaultStderrTarget ?? processStream("stder
|
|
|
123
123
|
}
|
|
124
124
|
var defaultStdoutTarget, defaultStderrTarget;
|
|
125
125
|
|
|
126
|
-
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.
|
|
126
|
+
// ../../node_modules/.bun/@gobing-ai+ts-utils@0.4.27/node_modules/@gobing-ai/ts-utils/dist/index.js
|
|
127
127
|
var init_dist = __esm(() => {
|
|
128
128
|
init_api_response();
|
|
129
129
|
init_cursor();
|
|
@@ -21745,7 +21745,7 @@ var init_zod = __esm(() => {
|
|
|
21745
21745
|
init_external();
|
|
21746
21746
|
});
|
|
21747
21747
|
|
|
21748
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
21748
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+9a36123834b81a08/node_modules/@gobing-ai/ts-runtime/dist/config.js
|
|
21749
21749
|
function getProcessEnv() {
|
|
21750
21750
|
return process.env;
|
|
21751
21751
|
}
|
|
@@ -21823,7 +21823,7 @@ var init_config = __esm(() => {
|
|
|
21823
21823
|
};
|
|
21824
21824
|
});
|
|
21825
21825
|
|
|
21826
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
21826
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+9a36123834b81a08/node_modules/@gobing-ai/ts-runtime/dist/file-system-node.js
|
|
21827
21827
|
import { appendFileSync, cpSync, createReadStream, createWriteStream, existsSync, mkdirSync, readdirSync, readFileSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "fs";
|
|
21828
21828
|
import { dirname, resolve as resolvePath } from "path";
|
|
21829
21829
|
function createNodeFileSystem(root, paths) {
|
|
@@ -21910,7 +21910,7 @@ function findProjectRoot(startDir) {
|
|
|
21910
21910
|
}
|
|
21911
21911
|
var init_file_system_node = () => {};
|
|
21912
21912
|
|
|
21913
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
21913
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+9a36123834b81a08/node_modules/@gobing-ai/ts-runtime/dist/db-errors.js
|
|
21914
21914
|
var DbModuleNotInstalledError;
|
|
21915
21915
|
var init_db_errors = __esm(() => {
|
|
21916
21916
|
DbModuleNotInstalledError = class DbModuleNotInstalledError extends Error {
|
|
@@ -29121,7 +29121,7 @@ var init_execa = __esm(() => {
|
|
|
29121
29121
|
} = getIpcExport());
|
|
29122
29122
|
});
|
|
29123
29123
|
|
|
29124
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29124
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+9a36123834b81a08/node_modules/@gobing-ai/ts-runtime/dist/process-executor.js
|
|
29125
29125
|
import { isatty } from "tty";
|
|
29126
29126
|
|
|
29127
29127
|
class NodeProcessExecutor {
|
|
@@ -29460,7 +29460,7 @@ var init_process_executor = __esm(() => {
|
|
|
29460
29460
|
init_execa();
|
|
29461
29461
|
});
|
|
29462
29462
|
|
|
29463
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29463
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+9a36123834b81a08/node_modules/@gobing-ai/ts-runtime/dist/runtime-node-bun.js
|
|
29464
29464
|
function getNodeFileSystem() {
|
|
29465
29465
|
if (!_nodeFileSystem)
|
|
29466
29466
|
_nodeFileSystem = createNodeFileSystem();
|
|
@@ -29520,7 +29520,7 @@ var init_runtime_node_bun = __esm(() => {
|
|
|
29520
29520
|
};
|
|
29521
29521
|
});
|
|
29522
29522
|
|
|
29523
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29523
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+9a36123834b81a08/node_modules/@gobing-ai/ts-runtime/dist/context.js
|
|
29524
29524
|
class RuntimeContext {
|
|
29525
29525
|
scope;
|
|
29526
29526
|
runtimeName;
|
|
@@ -29590,7 +29590,7 @@ var init_context = __esm(() => {
|
|
|
29590
29590
|
init_runtime_node_bun();
|
|
29591
29591
|
});
|
|
29592
29592
|
|
|
29593
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29593
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+9a36123834b81a08/node_modules/@gobing-ai/ts-runtime/dist/path.js
|
|
29594
29594
|
function normalizeSeparators(path6) {
|
|
29595
29595
|
return path6.replaceAll("\\", "/");
|
|
29596
29596
|
}
|
|
@@ -29651,17 +29651,17 @@ var init_path = __esm(() => {
|
|
|
29651
29651
|
SEP = globalThis.process?.platform === "win32" ? "\\" : "/";
|
|
29652
29652
|
});
|
|
29653
29653
|
|
|
29654
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29654
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+9a36123834b81a08/node_modules/@gobing-ai/ts-runtime/dist/schema-validation.js
|
|
29655
29655
|
var REMOTE_SCHEMA_MAX_BYTES;
|
|
29656
29656
|
var init_schema_validation = __esm(() => {
|
|
29657
29657
|
init_dist2();
|
|
29658
29658
|
REMOTE_SCHEMA_MAX_BYTES = 5 * 1024 * 1024;
|
|
29659
29659
|
});
|
|
29660
29660
|
|
|
29661
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29661
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+9a36123834b81a08/node_modules/@gobing-ai/ts-runtime/dist/types.js
|
|
29662
29662
|
var init_types = () => {};
|
|
29663
29663
|
|
|
29664
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29664
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+9a36123834b81a08/node_modules/@gobing-ai/ts-runtime/dist/index.js
|
|
29665
29665
|
var init_dist3 = __esm(() => {
|
|
29666
29666
|
init_config();
|
|
29667
29667
|
init_context();
|
|
@@ -29670,7 +29670,7 @@ var init_dist3 = __esm(() => {
|
|
|
29670
29670
|
init_types();
|
|
29671
29671
|
});
|
|
29672
29672
|
|
|
29673
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29673
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+9a36123834b81a08/node_modules/@gobing-ai/ts-runtime/dist/bun-sqlite.js
|
|
29674
29674
|
import { Database } from "bun:sqlite";
|
|
29675
29675
|
var init_bun_sqlite = () => {};
|
|
29676
29676
|
|
|
@@ -33862,7 +33862,7 @@ var init_bun_sqlite2 = __esm(() => {
|
|
|
33862
33862
|
init_session2();
|
|
33863
33863
|
});
|
|
33864
33864
|
|
|
33865
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
33865
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/schema/inbox-messages.js
|
|
33866
33866
|
var inboxMessages;
|
|
33867
33867
|
var init_inbox_messages = __esm(() => {
|
|
33868
33868
|
init_sqlite_core();
|
|
@@ -33881,7 +33881,7 @@ var init_inbox_messages = __esm(() => {
|
|
|
33881
33881
|
}, (table2) => [index("idx_inbox_messages_to_status").on(table2.toId, table2.status)]);
|
|
33882
33882
|
});
|
|
33883
33883
|
|
|
33884
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
33884
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/schema/common.js
|
|
33885
33885
|
function nowTimestamp() {
|
|
33886
33886
|
return Date.now();
|
|
33887
33887
|
}
|
|
@@ -33910,7 +33910,7 @@ var init_common3 = __esm(() => {
|
|
|
33910
33910
|
appendOnlyColumns = buildAppendOnlyColumns();
|
|
33911
33911
|
});
|
|
33912
33912
|
|
|
33913
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
33913
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/schema/queue-jobs.js
|
|
33914
33914
|
var queueJobs;
|
|
33915
33915
|
var init_queue_jobs = __esm(() => {
|
|
33916
33916
|
init_sqlite_core();
|
|
@@ -33930,7 +33930,7 @@ var init_queue_jobs = __esm(() => {
|
|
|
33930
33930
|
}, (table2) => [index("queue_jobs_ready_idx").on(table2.status, table2.nextRetryAt, table2.createdAt)]);
|
|
33931
33931
|
});
|
|
33932
33932
|
|
|
33933
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
33933
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/schema/runtime.js
|
|
33934
33934
|
var exports_runtime = {};
|
|
33935
33935
|
__export(exports_runtime, {
|
|
33936
33936
|
queueJobs: () => queueJobs,
|
|
@@ -33941,7 +33941,7 @@ var init_runtime = __esm(() => {
|
|
|
33941
33941
|
init_queue_jobs();
|
|
33942
33942
|
});
|
|
33943
33943
|
|
|
33944
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
33944
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/adapters/bun-sqlite.js
|
|
33945
33945
|
var exports_bun_sqlite = {};
|
|
33946
33946
|
__export(exports_bun_sqlite, {
|
|
33947
33947
|
BunSqliteAdapter: () => BunSqliteAdapter
|
|
@@ -34232,7 +34232,7 @@ var init_d1 = __esm(() => {
|
|
|
34232
34232
|
init_session3();
|
|
34233
34233
|
});
|
|
34234
34234
|
|
|
34235
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34235
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/adapters/d1.js
|
|
34236
34236
|
var exports_d1 = {};
|
|
34237
34237
|
__export(exports_d1, {
|
|
34238
34238
|
D1Adapter: () => D1Adapter
|
|
@@ -34296,7 +34296,7 @@ var init_d12 = __esm(() => {
|
|
|
34296
34296
|
init_runtime();
|
|
34297
34297
|
});
|
|
34298
34298
|
|
|
34299
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34299
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/adapter.js
|
|
34300
34300
|
async function createDbAdapter(config3) {
|
|
34301
34301
|
switch (config3.driver) {
|
|
34302
34302
|
case "bun-sqlite": {
|
|
@@ -34336,7 +34336,7 @@ var init_drizzle_orm = __esm(() => {
|
|
|
34336
34336
|
init_view_common();
|
|
34337
34337
|
});
|
|
34338
34338
|
|
|
34339
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34339
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/query-spec.js
|
|
34340
34340
|
function compilePredicate(predicate) {
|
|
34341
34341
|
if ("and" in predicate) {
|
|
34342
34342
|
const parts = predicate.and.map(compilePredicate).filter((p) => p !== undefined);
|
|
@@ -34374,7 +34374,7 @@ var init_query_spec = __esm(() => {
|
|
|
34374
34374
|
};
|
|
34375
34375
|
});
|
|
34376
34376
|
|
|
34377
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34377
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/base-dao.js
|
|
34378
34378
|
function asSelectQuery(query) {
|
|
34379
34379
|
return query;
|
|
34380
34380
|
}
|
|
@@ -34416,7 +34416,7 @@ var init_base_dao = __esm(() => {
|
|
|
34416
34416
|
init_query_spec();
|
|
34417
34417
|
});
|
|
34418
34418
|
|
|
34419
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34419
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/embedded-migrations.js
|
|
34420
34420
|
var embeddedMigrations;
|
|
34421
34421
|
var init_embedded_migrations = __esm(() => {
|
|
34422
34422
|
embeddedMigrations = [
|
|
@@ -34448,7 +34448,7 @@ var init_embedded_migrations = __esm(() => {
|
|
|
34448
34448
|
];
|
|
34449
34449
|
});
|
|
34450
34450
|
|
|
34451
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34451
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/entity-dao.js
|
|
34452
34452
|
var EntityDao;
|
|
34453
34453
|
var init_entity_dao = __esm(() => {
|
|
34454
34454
|
init_drizzle_orm();
|
|
@@ -34610,7 +34610,7 @@ var init_entity_dao = __esm(() => {
|
|
|
34610
34610
|
};
|
|
34611
34611
|
});
|
|
34612
34612
|
|
|
34613
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34613
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/inbox-message-dao.js
|
|
34614
34614
|
function isPromiseLike(value) {
|
|
34615
34615
|
return value !== null && (typeof value === "object" || typeof value === "function") && typeof value.then === "function";
|
|
34616
34616
|
}
|
|
@@ -34783,7 +34783,7 @@ var init_migrator2 = __esm(() => {
|
|
|
34783
34783
|
init_migrator();
|
|
34784
34784
|
});
|
|
34785
34785
|
|
|
34786
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34786
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/migrate.js
|
|
34787
34787
|
async function ensureJournalTable(adapter, table3) {
|
|
34788
34788
|
await adapter.exec(`CREATE TABLE IF NOT EXISTS "${table3}" (` + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "hash text NOT NULL, " + "created_at numeric" + ")");
|
|
34789
34789
|
}
|
|
@@ -34858,7 +34858,7 @@ var init_migrate = __esm(() => {
|
|
|
34858
34858
|
init_embedded_migrations();
|
|
34859
34859
|
});
|
|
34860
34860
|
|
|
34861
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34861
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/queue-job-dao.js
|
|
34862
34862
|
var QueueJobDao;
|
|
34863
34863
|
var init_queue_job_dao = __esm(() => {
|
|
34864
34864
|
init_drizzle_orm();
|
|
@@ -34999,7 +34999,7 @@ var init_queue_job_dao = __esm(() => {
|
|
|
34999
34999
|
};
|
|
35000
35000
|
});
|
|
35001
35001
|
|
|
35002
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
35002
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/index.js
|
|
35003
35003
|
var exports_dist = {};
|
|
35004
35004
|
__export(exports_dist, {
|
|
35005
35005
|
embeddedMigrations: () => embeddedMigrations,
|
|
@@ -37487,7 +37487,7 @@ var init_src = __esm(() => {
|
|
|
37487
37487
|
});
|
|
37488
37488
|
});
|
|
37489
37489
|
|
|
37490
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37490
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/config.js
|
|
37491
37491
|
function parseYamlObject(text3) {
|
|
37492
37492
|
let parsed;
|
|
37493
37493
|
try {
|
|
@@ -37614,7 +37614,7 @@ var init_config2 = __esm(() => {
|
|
|
37614
37614
|
};
|
|
37615
37615
|
});
|
|
37616
37616
|
|
|
37617
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37617
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/file-system-node.js
|
|
37618
37618
|
import { appendFileSync as appendFileSync3, cpSync as cpSync2, createReadStream as createReadStream3, createWriteStream as createWriteStream3, existsSync as existsSync2, mkdirSync as mkdirSync2, readdirSync as readdirSync2, readFileSync as readFileSync4, realpathSync as realpathSync2, renameSync as renameSync2, rmSync as rmSync2, statSync as statSync3, writeFileSync as writeFileSync3 } from "fs";
|
|
37619
37619
|
import { dirname as dirname2, resolve as resolvePath3 } from "path";
|
|
37620
37620
|
function createNodeFileSystem3(root, paths) {
|
|
@@ -37701,7 +37701,7 @@ function findProjectRoot3(startDir) {
|
|
|
37701
37701
|
}
|
|
37702
37702
|
var init_file_system_node2 = () => {};
|
|
37703
37703
|
|
|
37704
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37704
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/db-errors.js
|
|
37705
37705
|
var D1NotConfiguredError2, DbModuleNotInstalledError3;
|
|
37706
37706
|
var init_db_errors2 = __esm(() => {
|
|
37707
37707
|
D1NotConfiguredError2 = class D1NotConfiguredError2 extends Error {
|
|
@@ -37718,7 +37718,7 @@ var init_db_errors2 = __esm(() => {
|
|
|
37718
37718
|
};
|
|
37719
37719
|
});
|
|
37720
37720
|
|
|
37721
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37721
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/file-system-cf.js
|
|
37722
37722
|
function createCfFileSystem2() {
|
|
37723
37723
|
return {
|
|
37724
37724
|
getProjectRoot: () => "/bundle",
|
|
@@ -37757,7 +37757,7 @@ function createCfFileSystem2() {
|
|
|
37757
37757
|
}
|
|
37758
37758
|
var UNSUPPORTED = "FileSystem is not available on Cloudflare Workers. Use D1, KV, or R2 for persistent storage.";
|
|
37759
37759
|
|
|
37760
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37760
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/runtime-cf.js
|
|
37761
37761
|
var exports_runtime_cf = {};
|
|
37762
37762
|
__export(exports_runtime_cf, {
|
|
37763
37763
|
cloudflareWorkersFactory: () => cloudflareWorkersFactory2
|
|
@@ -37795,7 +37795,7 @@ var init_runtime_cf = __esm(() => {
|
|
|
37795
37795
|
};
|
|
37796
37796
|
});
|
|
37797
37797
|
|
|
37798
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37798
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/process-executor.js
|
|
37799
37799
|
import { isatty as isatty2 } from "tty";
|
|
37800
37800
|
|
|
37801
37801
|
class NodeProcessExecutor3 {
|
|
@@ -38181,7 +38181,7 @@ var init_process_executor2 = __esm(() => {
|
|
|
38181
38181
|
ProcessExecutor2 = NodeProcessExecutor3;
|
|
38182
38182
|
});
|
|
38183
38183
|
|
|
38184
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38184
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/runtime-node-bun.js
|
|
38185
38185
|
var exports_runtime_node_bun = {};
|
|
38186
38186
|
__export(exports_runtime_node_bun, {
|
|
38187
38187
|
nodeBunFactory: () => nodeBunFactory3,
|
|
@@ -38249,7 +38249,7 @@ var init_runtime_node_bun2 = __esm(() => {
|
|
|
38249
38249
|
};
|
|
38250
38250
|
});
|
|
38251
38251
|
|
|
38252
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38252
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/platform.js
|
|
38253
38253
|
function isCloudflareWorkerRuntime2() {
|
|
38254
38254
|
return globalThis.navigator?.userAgent?.startsWith("Cloudflare-Workers") ?? false;
|
|
38255
38255
|
}
|
|
@@ -38279,7 +38279,7 @@ function _resetRuntimeFactory2() {
|
|
|
38279
38279
|
}
|
|
38280
38280
|
var _factory, _runtimeName;
|
|
38281
38281
|
|
|
38282
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38282
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/context.js
|
|
38283
38283
|
class RuntimeContext2 {
|
|
38284
38284
|
scope;
|
|
38285
38285
|
runtimeName;
|
|
@@ -38369,7 +38369,7 @@ var init_context2 = __esm(() => {
|
|
|
38369
38369
|
init_runtime_node_bun2();
|
|
38370
38370
|
});
|
|
38371
38371
|
|
|
38372
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38372
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/path.js
|
|
38373
38373
|
function normalizeSeparators2(path7) {
|
|
38374
38374
|
return path7.replaceAll("\\", "/");
|
|
38375
38375
|
}
|
|
@@ -38492,7 +38492,7 @@ var init_path2 = __esm(() => {
|
|
|
38492
38492
|
SEP2 = globalThis.process?.platform === "win32" ? "\\" : "/";
|
|
38493
38493
|
});
|
|
38494
38494
|
|
|
38495
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38495
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/fs.js
|
|
38496
38496
|
async function ensureDirForFile2(path7, fs2 = createNodeFileSystem3()) {
|
|
38497
38497
|
await fs2.ensureDir(dirnamePath(path7));
|
|
38498
38498
|
}
|
|
@@ -38543,7 +38543,7 @@ var init_fs = __esm(() => {
|
|
|
38543
38543
|
init_path2();
|
|
38544
38544
|
});
|
|
38545
38545
|
|
|
38546
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38546
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/process-registry.js
|
|
38547
38547
|
function allocateId() {
|
|
38548
38548
|
nextIdSeq += 1;
|
|
38549
38549
|
return `pe_${Date.now().toString(36)}_${nextIdSeq.toString(36)}`;
|
|
@@ -38667,7 +38667,7 @@ function createInMemoryProcessRegistry2(options) {
|
|
|
38667
38667
|
}
|
|
38668
38668
|
var nextIdSeq = 0;
|
|
38669
38669
|
|
|
38670
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38670
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/runtime-paths.js
|
|
38671
38671
|
function ambientRuntimePaths2() {
|
|
38672
38672
|
const cwd = getProcessCwd2();
|
|
38673
38673
|
return { cwd, home: getHomeDir() ?? cwd };
|
|
@@ -38677,7 +38677,7 @@ var init_runtime_paths = __esm(() => {
|
|
|
38677
38677
|
init_path2();
|
|
38678
38678
|
});
|
|
38679
38679
|
|
|
38680
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38680
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/schema-validation.js
|
|
38681
38681
|
async function loadStructuredConfig(path7, options = {}) {
|
|
38682
38682
|
const content = await (options.fileSystem ?? createNodeFileSystem3()).readFile(path7);
|
|
38683
38683
|
return await parseStructuredConfig(content, path7, options);
|
|
@@ -38954,10 +38954,10 @@ var init_schema_validation2 = __esm(() => {
|
|
|
38954
38954
|
defaultResolve = typeof Bun !== "undefined" ? (specifier, from) => Bun.resolveSync(specifier, from) : undefined;
|
|
38955
38955
|
});
|
|
38956
38956
|
|
|
38957
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38957
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/types.js
|
|
38958
38958
|
var init_types2 = () => {};
|
|
38959
38959
|
|
|
38960
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38960
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/index.js
|
|
38961
38961
|
var exports_dist2 = {};
|
|
38962
38962
|
__export(exports_dist2, {
|
|
38963
38963
|
writeJsonFile: () => writeJsonFile2,
|
|
@@ -41108,7 +41108,7 @@ var init_mod = __esm(() => {
|
|
|
41108
41108
|
init_config3();
|
|
41109
41109
|
});
|
|
41110
41110
|
|
|
41111
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
41111
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/logger.js
|
|
41112
41112
|
function toLogTapeLevel(level) {
|
|
41113
41113
|
return level === "warn" ? "warning" : level;
|
|
41114
41114
|
}
|
|
@@ -42661,7 +42661,7 @@ var require_src = __commonJS((exports) => {
|
|
|
42661
42661
|
};
|
|
42662
42662
|
});
|
|
42663
42663
|
|
|
42664
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
42664
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/telemetry/sdk.js
|
|
42665
42665
|
function getTelemetryConfig(configPartial = {}) {
|
|
42666
42666
|
return {
|
|
42667
42667
|
enabled: configPartial.enabled ?? CONFIG_DEFAULTS.enabled,
|
|
@@ -42697,7 +42697,7 @@ var init_sdk = __esm(() => {
|
|
|
42697
42697
|
resolvedConfig = getTelemetryConfig();
|
|
42698
42698
|
});
|
|
42699
42699
|
|
|
42700
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
42700
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/telemetry/tracing.js
|
|
42701
42701
|
function isSuppressed(tracer2) {
|
|
42702
42702
|
return tracer2 === undefined && !getResolvedConfig().enabled;
|
|
42703
42703
|
}
|
|
@@ -42737,7 +42737,7 @@ var init_tracing2 = __esm(() => {
|
|
|
42737
42737
|
import_api2 = __toESM(require_src(), 1);
|
|
42738
42738
|
});
|
|
42739
42739
|
|
|
42740
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
42740
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/telemetry/metrics.js
|
|
42741
42741
|
function getMeter() {
|
|
42742
42742
|
return import_api3.metrics.getMeter(METER_NAME, METER_VERSION);
|
|
42743
42743
|
}
|
|
@@ -42834,7 +42834,7 @@ var init_metrics = __esm(() => {
|
|
|
42834
42834
|
instruments = {};
|
|
42835
42835
|
});
|
|
42836
42836
|
|
|
42837
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
42837
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/event-bus/event-bus.js
|
|
42838
42838
|
function busLogger() {
|
|
42839
42839
|
if (!_busLogger)
|
|
42840
42840
|
_busLogger = getLogger2("event-bus");
|
|
@@ -43079,7 +43079,7 @@ var init_event_bus = __esm(() => {
|
|
|
43079
43079
|
init_metrics();
|
|
43080
43080
|
});
|
|
43081
43081
|
|
|
43082
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
43082
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/event-bus/default-observers.js
|
|
43083
43083
|
function obsLogger() {
|
|
43084
43084
|
if (!_obsLogger)
|
|
43085
43085
|
_obsLogger = getLogger2("event-bus.observers");
|
|
@@ -43143,7 +43143,7 @@ var init_default_observers = __esm(() => {
|
|
|
43143
43143
|
init_event_bus();
|
|
43144
43144
|
});
|
|
43145
43145
|
|
|
43146
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
43146
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/event-bus/file-observer.js
|
|
43147
43147
|
function parentDir(filePath) {
|
|
43148
43148
|
const idx = filePath.lastIndexOf("/");
|
|
43149
43149
|
return idx <= 0 ? "." : filePath.slice(0, idx);
|
|
@@ -43241,7 +43241,7 @@ var init_file_observer = __esm(() => {
|
|
|
43241
43241
|
init_logger3();
|
|
43242
43242
|
});
|
|
43243
43243
|
|
|
43244
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
43244
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/internals/drain.js
|
|
43245
43245
|
function settleWithin(promise2, deadline) {
|
|
43246
43246
|
const remaining = deadline - Date.now();
|
|
43247
43247
|
if (remaining <= 0)
|
|
@@ -43256,7 +43256,7 @@ function settleWithin(promise2, deadline) {
|
|
|
43256
43256
|
return settled;
|
|
43257
43257
|
}
|
|
43258
43258
|
|
|
43259
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
43259
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/scheduler/node.js
|
|
43260
43260
|
function parseInterval(cron) {
|
|
43261
43261
|
const trimmed = cron.trim();
|
|
43262
43262
|
const num = Number(trimmed);
|
|
@@ -43349,7 +43349,7 @@ var init_node3 = __esm(() => {
|
|
|
43349
43349
|
init_metrics();
|
|
43350
43350
|
});
|
|
43351
43351
|
|
|
43352
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
43352
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/scheduler-node.js
|
|
43353
43353
|
var exports_scheduler_node = {};
|
|
43354
43354
|
__export(exports_scheduler_node, {
|
|
43355
43355
|
NodeSchedulerAdapter: () => NodeSchedulerAdapter
|
|
@@ -50354,7 +50354,9 @@ async function messageRollup(db2, sel) {
|
|
|
50354
50354
|
SUM(m.cache_read_tokens) AS cacheReadTokens,
|
|
50355
50355
|
SUM(m.cache_write_tokens) AS cacheWriteTokens,
|
|
50356
50356
|
SUM(m.cost_usd) AS costUsd,
|
|
50357
|
-
SUM(CASE WHEN m.input_tokens IS NOT NULL OR m.output_tokens IS NOT NULL THEN 1 ELSE 0 END) AS recordsWithUsage
|
|
50357
|
+
SUM(CASE WHEN m.input_tokens IS NOT NULL OR m.output_tokens IS NOT NULL THEN 1 ELSE 0 END) AS recordsWithUsage,
|
|
50358
|
+
SUM(CASE WHEN m.role = 'assistant' THEN m.duration_ms END) AS assistantDurationMs,
|
|
50359
|
+
SUM(CASE WHEN m.role = 'assistant' THEN m.duration_ms IS NULL END) AS assistantDurationUnmeasured
|
|
50358
50360
|
FROM history_message m
|
|
50359
50361
|
${where}
|
|
50360
50362
|
GROUP BY m.source, m.model, DATE(m.ts)`, ...params);
|
|
@@ -50393,7 +50395,9 @@ async function bySession(db2, sel, top) {
|
|
|
50393
50395
|
MIN(m.ts) AS startedAt,
|
|
50394
50396
|
COUNT(*) AS messages,
|
|
50395
50397
|
SUM(m.input_tokens + m.output_tokens) AS tokens,
|
|
50396
|
-
SUM(m.cost_usd) AS costUsd
|
|
50398
|
+
SUM(m.cost_usd) AS costUsd,
|
|
50399
|
+
SUM(CASE WHEN m.role = 'assistant' THEN m.duration_ms END) AS assistantDurationMs,
|
|
50400
|
+
SUM(CASE WHEN m.role = 'assistant' THEN m.duration_ms IS NULL END) AS assistantDurationUnmeasured
|
|
50397
50401
|
FROM history_message m
|
|
50398
50402
|
${where}
|
|
50399
50403
|
GROUP BY m.session_id, m.source
|
|
@@ -50441,7 +50445,9 @@ async function bySession(db2, sel, top) {
|
|
|
50441
50445
|
toolCalls,
|
|
50442
50446
|
topTool,
|
|
50443
50447
|
tokens: msg.tokens,
|
|
50444
|
-
costUsd: msg.costUsd
|
|
50448
|
+
costUsd: msg.costUsd,
|
|
50449
|
+
assistantDurationMs: msg.assistantDurationMs,
|
|
50450
|
+
assistantDurationUnmeasured: msg.assistantDurationUnmeasured
|
|
50445
50451
|
};
|
|
50446
50452
|
});
|
|
50447
50453
|
}
|
|
@@ -51031,7 +51037,7 @@ function stripScenarioPrefixes(title) {
|
|
|
51031
51037
|
let previous;
|
|
51032
51038
|
do {
|
|
51033
51039
|
previous = out;
|
|
51034
|
-
out = out.replace(/^\[[^\]]*\]\s*/, "").replace(/^Scenario:\s*/i, "").replace(/^R\d+\s*[:\-\u2014]?\s*/, "").trim();
|
|
51040
|
+
out = out.replace(/^\[[^\]]*\]\s*/, "").replace(/\s*\[[^\]]*\]\s*$/, "").replace(/^Scenario:\s*/i, "").replace(/^R\d+\s*[:\-\u2014]?\s*/, "").trim();
|
|
51035
51041
|
} while (out !== previous);
|
|
51036
51042
|
return out;
|
|
51037
51043
|
}
|
|
@@ -51126,6 +51132,19 @@ function stripAcFence(body) {
|
|
|
51126
51132
|
return out.join(`
|
|
51127
51133
|
`);
|
|
51128
51134
|
}
|
|
51135
|
+
function looksLikeGherkinAc(body) {
|
|
51136
|
+
return /^\s*(?:Feature:|Scenario:|Scenario Outline:)/m.test(body);
|
|
51137
|
+
}
|
|
51138
|
+
function normalizeAcFence(body) {
|
|
51139
|
+
const trimmed = body.trim();
|
|
51140
|
+
if (trimmed === "" || /^\s*```/m.test(trimmed))
|
|
51141
|
+
return body;
|
|
51142
|
+
if (!looksLikeGherkinAc(trimmed))
|
|
51143
|
+
return body;
|
|
51144
|
+
return `\`\`\`gherkin
|
|
51145
|
+
${trimmed}
|
|
51146
|
+
\`\`\``;
|
|
51147
|
+
}
|
|
51129
51148
|
|
|
51130
51149
|
// ../../packages/domain/src/bdd/scaffold.ts
|
|
51131
51150
|
function renderScenarioStub(scenario) {
|
|
@@ -51782,7 +51801,7 @@ var init_drizzle_zod = __esm(() => {
|
|
|
51782
51801
|
};
|
|
51783
51802
|
});
|
|
51784
51803
|
|
|
51785
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
51804
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/schema/drizzle-internals.js
|
|
51786
51805
|
function sqlExpressionToText(value) {
|
|
51787
51806
|
if (typeof value !== "object" || value === null || !("queryChunks" in value)) {
|
|
51788
51807
|
return;
|
|
@@ -51805,7 +51824,7 @@ function getDrizzleTableName(table3) {
|
|
|
51805
51824
|
return String(table3[nameSym]);
|
|
51806
51825
|
}
|
|
51807
51826
|
|
|
51808
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
51827
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/schema/ddl.js
|
|
51809
51828
|
function quoteIdent(name) {
|
|
51810
51829
|
return `"${name.replace(/"/g, '""')}"`;
|
|
51811
51830
|
}
|
|
@@ -51899,7 +51918,7 @@ var init_ddl = __esm(() => {
|
|
|
51899
51918
|
init_sqlite_core();
|
|
51900
51919
|
});
|
|
51901
51920
|
|
|
51902
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
51921
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/schema/define-table.js
|
|
51903
51922
|
function defineTable(name, columns2) {
|
|
51904
51923
|
const table3 = sqliteTable(name, columns2);
|
|
51905
51924
|
let insert2;
|
|
@@ -51933,7 +51952,7 @@ var init_define_table = __esm(() => {
|
|
|
51933
51952
|
init_ddl();
|
|
51934
51953
|
});
|
|
51935
51954
|
|
|
51936
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
51955
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.27+d178e82c03238f76/node_modules/@gobing-ai/ts-db/dist/schema/index.js
|
|
51937
51956
|
var init_schema = __esm(() => {
|
|
51938
51957
|
init_sqlite_core();
|
|
51939
51958
|
init_define_table();
|
|
@@ -52558,7 +52577,7 @@ var init_dao = __esm(() => {
|
|
|
52558
52577
|
init_workspace_dao();
|
|
52559
52578
|
});
|
|
52560
52579
|
|
|
52561
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
52580
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/errors.js
|
|
52562
52581
|
var WorkflowValidationError, FSMError, RunCollisionError, WorkflowResumeError;
|
|
52563
52582
|
var init_errors6 = __esm(() => {
|
|
52564
52583
|
WorkflowValidationError = class WorkflowValidationError extends Error {
|
|
@@ -52593,12 +52612,12 @@ var init_errors6 = __esm(() => {
|
|
|
52593
52612
|
};
|
|
52594
52613
|
});
|
|
52595
52614
|
|
|
52596
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
52615
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/event-bus/index.js
|
|
52597
52616
|
var init_event_bus2 = __esm(() => {
|
|
52598
52617
|
init_event_bus();
|
|
52599
52618
|
});
|
|
52600
52619
|
|
|
52601
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
52620
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/api-client.js
|
|
52602
52621
|
function sanitizeUrlForObservability(url2) {
|
|
52603
52622
|
try {
|
|
52604
52623
|
const parsed = new URL(url2);
|
|
@@ -52828,12 +52847,12 @@ var init_api_client = __esm(() => {
|
|
|
52828
52847
|
};
|
|
52829
52848
|
});
|
|
52830
52849
|
|
|
52831
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
52850
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/telemetry/index.js
|
|
52832
52851
|
var init_telemetry = __esm(() => {
|
|
52833
52852
|
init_tracing2();
|
|
52834
52853
|
});
|
|
52835
52854
|
|
|
52836
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
52855
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/index.js
|
|
52837
52856
|
var init_dist6 = __esm(() => {
|
|
52838
52857
|
init_api_client();
|
|
52839
52858
|
init_event_bus2();
|
|
@@ -52841,7 +52860,7 @@ var init_dist6 = __esm(() => {
|
|
|
52841
52860
|
init_telemetry();
|
|
52842
52861
|
});
|
|
52843
52862
|
|
|
52844
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
52863
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/run-lifecycle.js
|
|
52845
52864
|
function runtimeBuiltins(workflowName, stateOrNodeId, runId, transitionsTaken, mode) {
|
|
52846
52865
|
return {
|
|
52847
52866
|
workflow: workflowName,
|
|
@@ -53100,7 +53119,7 @@ var init_run_lifecycle = __esm(() => {
|
|
|
53100
53119
|
];
|
|
53101
53120
|
});
|
|
53102
53121
|
|
|
53103
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53122
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/schema.js
|
|
53104
53123
|
var RESERVED_VAR_NAMES, IDENTIFIER, VarsSchema, EnvSchema, ActionDefSchema, GuardDefSchema, StateMachineWorkflowDefSchema, TransitionFlowWorkflowDefSchema, WorkflowDefSchema;
|
|
53105
53124
|
var init_schema2 = __esm(() => {
|
|
53106
53125
|
init_zod();
|
|
@@ -53185,7 +53204,7 @@ var init_schema2 = __esm(() => {
|
|
|
53185
53204
|
WorkflowDefSchema = exports_external.union([StateMachineWorkflowDefSchema, TransitionFlowWorkflowDefSchema]);
|
|
53186
53205
|
});
|
|
53187
53206
|
|
|
53188
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53207
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/config.js
|
|
53189
53208
|
async function loadWorkflowDef(path9, options = {}) {
|
|
53190
53209
|
return parseWorkflowDef(await loadStructuredConfig(path9, options), path9);
|
|
53191
53210
|
}
|
|
@@ -53352,7 +53371,7 @@ var init_config4 = __esm(() => {
|
|
|
53352
53371
|
RUNTIME_TEMPLATE_NAMESPACES = new Set(RUNTIME_BUILTIN_KEYS);
|
|
53353
53372
|
});
|
|
53354
53373
|
|
|
53355
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
53374
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/extension/capability-registry.js
|
|
53356
53375
|
class CapabilityRegistry {
|
|
53357
53376
|
kind;
|
|
53358
53377
|
capabilities = new Map;
|
|
@@ -53383,7 +53402,7 @@ class CapabilityRegistry {
|
|
|
53383
53402
|
}
|
|
53384
53403
|
}
|
|
53385
53404
|
|
|
53386
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
53405
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/extension/extension-path.js
|
|
53387
53406
|
function assertRelativeExtensionPath(path9, options = {}) {
|
|
53388
53407
|
const where = options.sourceName !== undefined ? ` declared by "${options.sourceName}"` : "";
|
|
53389
53408
|
if (/^([/\\]|[A-Za-z]:[/\\])/.test(path9)) {
|
|
@@ -53394,20 +53413,20 @@ function assertRelativeExtensionPath(path9, options = {}) {
|
|
|
53394
53413
|
}
|
|
53395
53414
|
}
|
|
53396
53415
|
|
|
53397
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
53416
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/extension/extension-loader.js
|
|
53398
53417
|
var init_extension_loader = () => {};
|
|
53399
53418
|
|
|
53400
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
53419
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/extension/index.js
|
|
53401
53420
|
var init_extension = __esm(() => {
|
|
53402
53421
|
init_extension_loader();
|
|
53403
53422
|
});
|
|
53404
53423
|
|
|
53405
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
53424
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.27+f7e0689639f664f9/node_modules/@gobing-ai/ts-runtime/dist/extension.js
|
|
53406
53425
|
var init_extension2 = __esm(() => {
|
|
53407
53426
|
init_extension();
|
|
53408
53427
|
});
|
|
53409
53428
|
|
|
53410
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53429
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/host.js
|
|
53411
53430
|
class WorkflowEngineHost {
|
|
53412
53431
|
lifecycleBus;
|
|
53413
53432
|
actions = new CapabilityRegistry("workflow action");
|
|
@@ -53576,7 +53595,7 @@ var init_host = __esm(() => {
|
|
|
53576
53595
|
init_errors6();
|
|
53577
53596
|
});
|
|
53578
53597
|
|
|
53579
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53598
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/schema-sql.js
|
|
53580
53599
|
var WORKFLOW_ENGINE_SCHEMA_SQL;
|
|
53581
53600
|
var init_schema_sql = __esm(() => {
|
|
53582
53601
|
WORKFLOW_ENGINE_SCHEMA_SQL = `
|
|
@@ -53649,7 +53668,7 @@ CREATE TABLE IF NOT EXISTS action_runs (
|
|
|
53649
53668
|
`.trim();
|
|
53650
53669
|
});
|
|
53651
53670
|
|
|
53652
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53671
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/persistence.js
|
|
53653
53672
|
async function applyWorkflowEngineSchema(db2) {
|
|
53654
53673
|
for (const statement of WORKFLOW_ENGINE_SCHEMA_SQL.split(";")) {
|
|
53655
53674
|
const sql4 = statement.trim();
|
|
@@ -53938,7 +53957,7 @@ var init_persistence = __esm(() => {
|
|
|
53938
53957
|
init_schema_sql();
|
|
53939
53958
|
});
|
|
53940
53959
|
|
|
53941
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53960
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/variables.js
|
|
53942
53961
|
function mergeVars(workflowVars = {}, overrideVars = {}) {
|
|
53943
53962
|
return { ...workflowVars, ...overrideVars };
|
|
53944
53963
|
}
|
|
@@ -53998,7 +54017,7 @@ var init_variables = __esm(() => {
|
|
|
53998
54017
|
TEMPLATE_REF = /\$\{([^}]+)\}/g;
|
|
53999
54018
|
});
|
|
54000
54019
|
|
|
54001
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
54020
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/action-step.js
|
|
54002
54021
|
async function runActionStep(action, vars, deps) {
|
|
54003
54022
|
const { host, persistence, lifecycle, stateOrNodeId, runId } = deps;
|
|
54004
54023
|
const resolved = resolveTemplates(action.options ?? {}, {
|
|
@@ -54056,7 +54075,7 @@ var init_action_step = __esm(() => {
|
|
|
54056
54075
|
init_variables();
|
|
54057
54076
|
});
|
|
54058
54077
|
|
|
54059
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
54078
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/state-machine.js
|
|
54060
54079
|
class StateMachineDriver {
|
|
54061
54080
|
options;
|
|
54062
54081
|
constructor(options) {
|
|
@@ -54192,7 +54211,7 @@ var init_state_machine = __esm(() => {
|
|
|
54192
54211
|
EMPTY_OUTCOME = { outcome: "completed", result: undefined };
|
|
54193
54212
|
});
|
|
54194
54213
|
|
|
54195
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
54214
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/transition-flow.js
|
|
54196
54215
|
class TransitionFlowDriver {
|
|
54197
54216
|
options;
|
|
54198
54217
|
constructor(options) {
|
|
@@ -54311,7 +54330,7 @@ var init_transition_flow = __esm(() => {
|
|
|
54311
54330
|
init_variables();
|
|
54312
54331
|
});
|
|
54313
54332
|
|
|
54314
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
54333
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/service.js
|
|
54315
54334
|
class WorkflowService {
|
|
54316
54335
|
host;
|
|
54317
54336
|
persistence;
|
|
@@ -54528,7 +54547,7 @@ var init_service = __esm(() => {
|
|
|
54528
54547
|
init_variables();
|
|
54529
54548
|
});
|
|
54530
54549
|
|
|
54531
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
54550
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/index.js
|
|
54532
54551
|
var init_dist7 = __esm(() => {
|
|
54533
54552
|
init_config4();
|
|
54534
54553
|
init_host();
|
|
@@ -54537,7 +54556,7 @@ var init_dist7 = __esm(() => {
|
|
|
54537
54556
|
init_service();
|
|
54538
54557
|
});
|
|
54539
54558
|
|
|
54540
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54559
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.27+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/hash.js
|
|
54541
54560
|
import { createHash as createHash2 } from "crypto";
|
|
54542
54561
|
function stableJson(value) {
|
|
54543
54562
|
if (Array.isArray(value)) {
|
|
@@ -54554,7 +54573,7 @@ function sha256(value) {
|
|
|
54554
54573
|
}
|
|
54555
54574
|
var init_hash = () => {};
|
|
54556
54575
|
|
|
54557
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54576
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.27+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/errors.js
|
|
54558
54577
|
var HistoryImportError;
|
|
54559
54578
|
var init_errors7 = __esm(() => {
|
|
54560
54579
|
HistoryImportError = class HistoryImportError extends Error {
|
|
@@ -54567,7 +54586,7 @@ var init_errors7 = __esm(() => {
|
|
|
54567
54586
|
};
|
|
54568
54587
|
});
|
|
54569
54588
|
|
|
54570
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54589
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.27+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/schema-sql.js
|
|
54571
54590
|
var HISTORY_IMPORT_SCHEMA_SQL;
|
|
54572
54591
|
var init_schema_sql2 = __esm(() => {
|
|
54573
54592
|
HISTORY_IMPORT_SCHEMA_SQL = `
|
|
@@ -54711,7 +54730,7 @@ CREATE INDEX IF NOT EXISTS idx_history_tool_call_message_hash
|
|
|
54711
54730
|
`.trim();
|
|
54712
54731
|
});
|
|
54713
54732
|
|
|
54714
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54733
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.27+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/mappers.js
|
|
54715
54734
|
function identityFieldMap(keys) {
|
|
54716
54735
|
const map2 = {};
|
|
54717
54736
|
for (const key of keys) {
|
|
@@ -54912,39 +54931,41 @@ function piSplit(raw) {
|
|
|
54912
54931
|
}
|
|
54913
54932
|
return entries;
|
|
54914
54933
|
}
|
|
54915
|
-
function ompSplit(raw) {
|
|
54934
|
+
function ompSplit(raw, context4) {
|
|
54935
|
+
const msg = raw.message;
|
|
54916
54936
|
const recordType = String(raw.type ?? "");
|
|
54917
|
-
|
|
54937
|
+
const sessionId = sessionIdFromContext(context4, raw);
|
|
54938
|
+
const seq = context4?.sourceLine ?? (typeof raw.seq === "number" ? raw.seq : 0);
|
|
54939
|
+
const ts = s(raw.ts, raw.timestamp, raw.createdAt) ?? new Date(0).toISOString();
|
|
54940
|
+
if (recordType === "title" || recordType === "title_change" || recordType === "service_tier_change" || recordType === "ttsr_injection" || recordType === "session_init" || recordType === "session" || recordType === "model_change" || recordType === "thinking_level_change" || recordType === "compaction" || recordType === "custom" || recordType === "custom_message" || recordType.startsWith("custom.")) {
|
|
54918
54941
|
return [
|
|
54919
54942
|
{
|
|
54920
54943
|
targetTable: "history_message",
|
|
54921
54944
|
record: {
|
|
54922
|
-
session_id:
|
|
54923
|
-
seq
|
|
54945
|
+
session_id: sessionId,
|
|
54946
|
+
seq,
|
|
54924
54947
|
role: "meta",
|
|
54925
54948
|
record_type: recordType,
|
|
54926
54949
|
disposition: "meta",
|
|
54927
|
-
ts
|
|
54950
|
+
ts,
|
|
54928
54951
|
provenance: "ambient"
|
|
54929
54952
|
}
|
|
54930
54953
|
}
|
|
54931
54954
|
];
|
|
54932
54955
|
}
|
|
54933
54956
|
const entries = [];
|
|
54934
|
-
const
|
|
54935
|
-
const
|
|
54936
|
-
const ts = s(raw.ts, raw.timestamp, raw.createdAt) ?? new Date(0).toISOString();
|
|
54937
|
-
const role = mapRole(raw.type ?? raw.role);
|
|
54938
|
-
const model = s(raw.model, o2(raw.message).model);
|
|
54957
|
+
const role = mapRole(msg?.role ?? raw.type ?? raw.role);
|
|
54958
|
+
const model = s(raw.model, o2(msg).model);
|
|
54939
54959
|
const cwd = s(raw.cwd, raw.dir);
|
|
54940
|
-
const
|
|
54941
|
-
const usage = msg?.usage;
|
|
54960
|
+
const usage = msg?.usage ?? raw.usage;
|
|
54942
54961
|
const inputTokens = usage?.input ?? usage?.input_tokens ?? undefined;
|
|
54943
54962
|
const outputTokens = usage?.output ?? usage?.output_tokens ?? undefined;
|
|
54944
54963
|
const cacheRead = usage?.cacheRead ?? usage?.cache_read_tokens ?? undefined;
|
|
54945
54964
|
const cacheWrite = usage?.cacheWrite ?? usage?.cache_write_tokens ?? undefined;
|
|
54946
54965
|
const costObj = msg?.cost ?? raw.cost;
|
|
54947
54966
|
const costUsd = typeof costObj?.total === "number" ? costObj.total : computeCost(inputTokens, outputTokens, model);
|
|
54967
|
+
const contentBlocks = msg?.content ?? raw.content;
|
|
54968
|
+
const durationMs = typeof msg?.duration === "number" && Number.isFinite(msg.duration) ? msg.duration : undefined;
|
|
54948
54969
|
const messageSplitIndex = entries.length;
|
|
54949
54970
|
entries.push({
|
|
54950
54971
|
targetTable: "history_message",
|
|
@@ -54955,43 +54976,53 @@ function ompSplit(raw) {
|
|
|
54955
54976
|
record_type: recordType,
|
|
54956
54977
|
disposition: "keep",
|
|
54957
54978
|
ts,
|
|
54958
|
-
duration_ms:
|
|
54979
|
+
duration_ms: durationMs,
|
|
54959
54980
|
model: model ?? null,
|
|
54960
54981
|
input_tokens: inputTokens ?? null,
|
|
54961
54982
|
output_tokens: outputTokens ?? null,
|
|
54962
54983
|
cache_read_tokens: cacheRead ?? null,
|
|
54963
54984
|
cache_write_tokens: cacheWrite ?? null,
|
|
54964
54985
|
cost_usd: costUsd ?? null,
|
|
54965
|
-
content_text: s(raw.content, raw.text, msg?.content) ?? null,
|
|
54986
|
+
content_text: extractContentText(contentBlocks) ?? s(raw.content, raw.text, msg?.content) ?? null,
|
|
54966
54987
|
cwd: cwd ?? null,
|
|
54967
54988
|
provenance: detectProvenance(cwd)
|
|
54968
54989
|
}
|
|
54969
54990
|
});
|
|
54970
|
-
if (Array.isArray(
|
|
54971
|
-
for (const block of
|
|
54972
|
-
|
|
54973
|
-
|
|
54974
|
-
|
|
54975
|
-
|
|
54976
|
-
|
|
54977
|
-
|
|
54978
|
-
|
|
54979
|
-
|
|
54980
|
-
|
|
54981
|
-
|
|
54982
|
-
|
|
54983
|
-
|
|
54984
|
-
|
|
54985
|
-
|
|
54986
|
-
|
|
54987
|
-
|
|
54988
|
-
|
|
54989
|
-
}
|
|
54990
|
-
}
|
|
54991
|
+
if (Array.isArray(contentBlocks) && role === "assistant") {
|
|
54992
|
+
for (const block of contentBlocks) {
|
|
54993
|
+
const call = normalizeOmpToolCall(block);
|
|
54994
|
+
if (call === null)
|
|
54995
|
+
continue;
|
|
54996
|
+
entries.push({
|
|
54997
|
+
targetTable: "history_tool_call",
|
|
54998
|
+
record: {
|
|
54999
|
+
_messageSplitIndex: messageSplitIndex,
|
|
55000
|
+
session_id: sessionId,
|
|
55001
|
+
seq,
|
|
55002
|
+
tool_name: String(call.name ?? ""),
|
|
55003
|
+
args_digest: argsDigest(call.input ?? call.arguments),
|
|
55004
|
+
status: "ok",
|
|
55005
|
+
started_at: undefined,
|
|
55006
|
+
completed_at: undefined,
|
|
55007
|
+
duration_ms: undefined,
|
|
55008
|
+
result_bytes: undefined,
|
|
55009
|
+
error_text: undefined
|
|
55010
|
+
}
|
|
55011
|
+
});
|
|
54991
55012
|
}
|
|
54992
55013
|
}
|
|
54993
55014
|
return entries;
|
|
54994
55015
|
}
|
|
55016
|
+
function normalizeOmpToolCall(block) {
|
|
55017
|
+
if (typeof block !== "object" || block === null)
|
|
55018
|
+
return null;
|
|
55019
|
+
const nested = o2(block.toolCall);
|
|
55020
|
+
if (Object.keys(nested).length > 0)
|
|
55021
|
+
return nested;
|
|
55022
|
+
if (block.type === "toolCall")
|
|
55023
|
+
return block;
|
|
55024
|
+
return null;
|
|
55025
|
+
}
|
|
54995
55026
|
function codexSplit(raw) {
|
|
54996
55027
|
const entries = [];
|
|
54997
55028
|
const payload = raw.payload ?? raw;
|
|
@@ -55763,7 +55794,7 @@ var init_mappers = __esm(() => {
|
|
|
55763
55794
|
GEMINI_SCHEMA = passthroughSchema;
|
|
55764
55795
|
});
|
|
55765
55796
|
|
|
55766
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
55797
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.27+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/sources.js
|
|
55767
55798
|
function firstString(...values) {
|
|
55768
55799
|
for (const value of values) {
|
|
55769
55800
|
if (typeof value === "string" && value.length > 0)
|
|
@@ -55917,7 +55948,7 @@ var init_sources = __esm(() => {
|
|
|
55917
55948
|
};
|
|
55918
55949
|
});
|
|
55919
55950
|
|
|
55920
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
55951
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.27+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/jsonl-importer-dao.js
|
|
55921
55952
|
function targetTableFor(table3) {
|
|
55922
55953
|
if (!VALID_TABLE_NAME.test(table3)) {
|
|
55923
55954
|
throw new HistoryImportError(`Invalid history ETL target table: ${table3}`, { table: table3 });
|
|
@@ -56013,6 +56044,43 @@ async function insertLedger(db2, recordHash, source, sourceFile, sourceLine, spl
|
|
|
56013
56044
|
await db2.run(`INSERT INTO history_import_ledger (record_hash, source, source_file, source_line, split_index, target_table, imported_at)
|
|
56014
56045
|
VALUES (?, ?, ?, ?, ?, ?, ?)`, recordHash, source, sourceFile, sourceLine, splitIndex, targetTable, timestamp(now2));
|
|
56015
56046
|
}
|
|
56047
|
+
async function reconcileFullImport(db2, source, desiredHashes, discoveredFiles, dryRun) {
|
|
56048
|
+
const ledgerRows = await db2.queryAll("SELECT record_hash, target_table FROM history_import_ledger WHERE source = ?", source);
|
|
56049
|
+
const stale = [];
|
|
56050
|
+
for (const row of ledgerRows) {
|
|
56051
|
+
if (!desiredHashes.has(row.record_hash))
|
|
56052
|
+
stale.push(row);
|
|
56053
|
+
}
|
|
56054
|
+
const checkpointRows = await db2.queryAll("SELECT source_file FROM history_import_checkpoint WHERE source = ?", source);
|
|
56055
|
+
const discovered = new Set(discoveredFiles);
|
|
56056
|
+
const staleCheckpoints = checkpointRows.map((row) => row.source_file).filter((sourceFile) => !discovered.has(sourceFile));
|
|
56057
|
+
const summary = {
|
|
56058
|
+
staleTargetRows: stale.length,
|
|
56059
|
+
staleLedgerRows: stale.length,
|
|
56060
|
+
staleCheckpointRows: staleCheckpoints.length
|
|
56061
|
+
};
|
|
56062
|
+
if (dryRun || stale.length === 0 && staleCheckpoints.length === 0)
|
|
56063
|
+
return summary;
|
|
56064
|
+
const operations2 = [];
|
|
56065
|
+
for (const row of stale) {
|
|
56066
|
+
operations2.push({
|
|
56067
|
+
sql: `DELETE FROM ${targetTableFor(row.target_table)} WHERE record_hash = ?`,
|
|
56068
|
+
params: [row.record_hash]
|
|
56069
|
+
});
|
|
56070
|
+
operations2.push({
|
|
56071
|
+
sql: "DELETE FROM history_import_ledger WHERE record_hash = ?",
|
|
56072
|
+
params: [row.record_hash]
|
|
56073
|
+
});
|
|
56074
|
+
}
|
|
56075
|
+
for (const sourceFile of staleCheckpoints) {
|
|
56076
|
+
operations2.push({
|
|
56077
|
+
sql: "DELETE FROM history_import_checkpoint WHERE source = ? AND source_file = ?",
|
|
56078
|
+
params: [source, sourceFile]
|
|
56079
|
+
});
|
|
56080
|
+
}
|
|
56081
|
+
await db2.batch(operations2);
|
|
56082
|
+
return summary;
|
|
56083
|
+
}
|
|
56016
56084
|
async function readOpenCodeMessages(db2, lastTime, lastId, limit) {
|
|
56017
56085
|
return db2.queryAll(`SELECT m.id, m.session_id, m.time_created, m.data, s.directory
|
|
56018
56086
|
FROM message m
|
|
@@ -56051,6 +56119,12 @@ function openCodeDeleteOperations(entries) {
|
|
|
56051
56119
|
}
|
|
56052
56120
|
]);
|
|
56053
56121
|
}
|
|
56122
|
+
function deleteCheckpointOperation(source, sourceFile) {
|
|
56123
|
+
return {
|
|
56124
|
+
sql: "DELETE FROM history_import_checkpoint WHERE source = ? AND source_file = ?",
|
|
56125
|
+
params: [source, sourceFile]
|
|
56126
|
+
};
|
|
56127
|
+
}
|
|
56054
56128
|
function openCodeBulkWriteOperations(entries, checkpointFiles, now2) {
|
|
56055
56129
|
const importedAt = timestamp(now2);
|
|
56056
56130
|
const operations2 = [];
|
|
@@ -56157,7 +56231,7 @@ var init_jsonl_importer_dao = __esm(() => {
|
|
|
56157
56231
|
_ensuredTables = new Set;
|
|
56158
56232
|
});
|
|
56159
56233
|
|
|
56160
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
56234
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.27+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/redaction.js
|
|
56161
56235
|
function redactValue(value, rules = DEFAULT_REDACTION_RULES) {
|
|
56162
56236
|
if (typeof value === "string") {
|
|
56163
56237
|
return rules.reduce((current, rule) => current.replace(rule.pattern, rule.replacement), value);
|
|
@@ -56194,7 +56268,7 @@ var init_redaction = __esm(() => {
|
|
|
56194
56268
|
];
|
|
56195
56269
|
});
|
|
56196
56270
|
|
|
56197
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
56271
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.27+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/importer.js
|
|
56198
56272
|
async function runJsonlImport(source, options) {
|
|
56199
56273
|
const definition = resolveSourceDefinition(source);
|
|
56200
56274
|
const resolvedSource = definition.source;
|
|
@@ -56213,6 +56287,7 @@ async function runJsonlImport(source, options) {
|
|
|
56213
56287
|
let skippedDuplicates = 0;
|
|
56214
56288
|
let unknownRecords = 0;
|
|
56215
56289
|
let checkpointUpdates = 0;
|
|
56290
|
+
const desiredHashes = new Set;
|
|
56216
56291
|
for (const file2 of files) {
|
|
56217
56292
|
const checkpoint = mode === "incremental" ? await readCheckpoint(options.db, resolvedSource, file2) : 0;
|
|
56218
56293
|
let lineNumber = 0;
|
|
@@ -56232,6 +56307,7 @@ async function runJsonlImport(source, options) {
|
|
|
56232
56307
|
splitIndex: 0
|
|
56233
56308
|
});
|
|
56234
56309
|
let lineSucceeded = false;
|
|
56310
|
+
let lineRejected = false;
|
|
56235
56311
|
const prepared = [];
|
|
56236
56312
|
for (let splitIndex = 0;splitIndex < splitRecords.length; splitIndex += 1) {
|
|
56237
56313
|
const split = splitRecords[splitIndex];
|
|
@@ -56250,6 +56326,7 @@ async function runJsonlImport(source, options) {
|
|
|
56250
56326
|
sourceLine: lineNumber,
|
|
56251
56327
|
reason: parsed.error.issues.map((issue2) => issue2.message).join("; ")
|
|
56252
56328
|
});
|
|
56329
|
+
lineRejected = true;
|
|
56253
56330
|
continue;
|
|
56254
56331
|
}
|
|
56255
56332
|
const redacted = redactRecord(parsed.data, options.redactionRules);
|
|
@@ -56261,12 +56338,15 @@ async function runJsonlImport(source, options) {
|
|
|
56261
56338
|
splitIndex,
|
|
56262
56339
|
record: redacted
|
|
56263
56340
|
});
|
|
56341
|
+
desiredHashes.add(recordHash);
|
|
56264
56342
|
if (await ledgerExists(options.db, recordHash)) {
|
|
56265
56343
|
skippedDuplicates += 1;
|
|
56266
56344
|
continue;
|
|
56267
56345
|
}
|
|
56268
56346
|
prepared.push({ split, splitIndex, normalized: redacted, recordHash });
|
|
56269
56347
|
}
|
|
56348
|
+
if (lineRejected)
|
|
56349
|
+
continue;
|
|
56270
56350
|
const recordHashBySplitIndex = new Map(prepared.map((e) => [e.splitIndex, e.recordHash]));
|
|
56271
56351
|
for (const entry of prepared) {
|
|
56272
56352
|
const { split, splitIndex, normalized, recordHash } = entry;
|
|
@@ -56293,6 +56373,10 @@ async function runJsonlImport(source, options) {
|
|
|
56293
56373
|
}
|
|
56294
56374
|
}
|
|
56295
56375
|
}
|
|
56376
|
+
let reconciliation;
|
|
56377
|
+
if (mode === "full") {
|
|
56378
|
+
reconciliation = await reconcileFullImport(options.db, resolvedSource, desiredHashes, files, options.dryRun ?? false);
|
|
56379
|
+
}
|
|
56296
56380
|
return {
|
|
56297
56381
|
source: resolvedSource,
|
|
56298
56382
|
mode,
|
|
@@ -56303,7 +56387,8 @@ async function runJsonlImport(source, options) {
|
|
|
56303
56387
|
unknownRecords,
|
|
56304
56388
|
parseErrors,
|
|
56305
56389
|
validationErrors,
|
|
56306
|
-
checkpointUpdates
|
|
56390
|
+
checkpointUpdates,
|
|
56391
|
+
reconciliation
|
|
56307
56392
|
};
|
|
56308
56393
|
}
|
|
56309
56394
|
function parseJsonLine(line, sourceFile, sourceLine, parseErrors) {
|
|
@@ -56421,7 +56506,7 @@ var init_importer = __esm(() => {
|
|
|
56421
56506
|
init_sources();
|
|
56422
56507
|
});
|
|
56423
56508
|
|
|
56424
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
56509
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.27+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/opencode-importer.js
|
|
56425
56510
|
async function runOpenCodeImport(options) {
|
|
56426
56511
|
const paths = options.paths ?? ambientRuntimePaths2();
|
|
56427
56512
|
const sourceDatabase = options.sourceDatabase ?? joinPath2(paths.home, ".local/share/opencode/opencode.db");
|
|
@@ -56440,7 +56525,12 @@ async function runOpenCodeImport(options) {
|
|
|
56440
56525
|
let lastTime = -1;
|
|
56441
56526
|
let lastId = "";
|
|
56442
56527
|
const existingBySourceFile = await readOpenCodeExistingEntries(options.db);
|
|
56528
|
+
const seenSourceFiles = new Set;
|
|
56443
56529
|
const operations2 = [];
|
|
56530
|
+
let staleTargetRows = 0;
|
|
56531
|
+
let staleLedgerRows = 0;
|
|
56532
|
+
let staleCheckpointRows = 0;
|
|
56533
|
+
let reconciliation;
|
|
56444
56534
|
try {
|
|
56445
56535
|
while (true) {
|
|
56446
56536
|
const messages = await readOpenCodeMessages(sourceDb, lastTime, lastId, PAGE_SIZE);
|
|
@@ -56462,11 +56552,16 @@ async function runOpenCodeImport(options) {
|
|
|
56462
56552
|
validationErrors.push({ sourceFile, sourceLine: 1, reason: "OpenCode message has no valid role" });
|
|
56463
56553
|
continue;
|
|
56464
56554
|
}
|
|
56555
|
+
seenSourceFiles.add(sourceFile);
|
|
56465
56556
|
const existing = existingBySourceFile.get(sourceFile) ?? [];
|
|
56466
56557
|
if (sameHashes(existing, entries)) {
|
|
56467
56558
|
skippedDuplicates += entries.length;
|
|
56468
56559
|
continue;
|
|
56469
56560
|
}
|
|
56561
|
+
if (mode === "full") {
|
|
56562
|
+
staleTargetRows += existing.length;
|
|
56563
|
+
staleLedgerRows += existing.length;
|
|
56564
|
+
}
|
|
56470
56565
|
if (!options.dryRun) {
|
|
56471
56566
|
operations2.push(...openCodeDeleteOperations(existing));
|
|
56472
56567
|
for (const entry of entries) {
|
|
@@ -56487,6 +56582,20 @@ async function runOpenCodeImport(options) {
|
|
|
56487
56582
|
lastTime = tail.time_created;
|
|
56488
56583
|
lastId = tail.id;
|
|
56489
56584
|
}
|
|
56585
|
+
if (mode === "full") {
|
|
56586
|
+
for (const [sourceFile, entries] of existingBySourceFile) {
|
|
56587
|
+
if (seenSourceFiles.has(sourceFile))
|
|
56588
|
+
continue;
|
|
56589
|
+
staleLedgerRows += entries.length;
|
|
56590
|
+
staleTargetRows += entries.length;
|
|
56591
|
+
staleCheckpointRows += 1;
|
|
56592
|
+
if (!options.dryRun) {
|
|
56593
|
+
operations2.push(...openCodeDeleteOperations(entries));
|
|
56594
|
+
operations2.push(deleteCheckpointOperation(SOURCE, sourceFile));
|
|
56595
|
+
}
|
|
56596
|
+
}
|
|
56597
|
+
reconciliation = { staleTargetRows, staleLedgerRows, staleCheckpointRows };
|
|
56598
|
+
}
|
|
56490
56599
|
if (operations2.length > 0)
|
|
56491
56600
|
await options.db.batch(operations2);
|
|
56492
56601
|
} finally {
|
|
@@ -56502,7 +56611,8 @@ async function runOpenCodeImport(options) {
|
|
|
56502
56611
|
unknownRecords: 0,
|
|
56503
56612
|
parseErrors,
|
|
56504
56613
|
validationErrors,
|
|
56505
|
-
checkpointUpdates
|
|
56614
|
+
checkpointUpdates,
|
|
56615
|
+
reconciliation
|
|
56506
56616
|
};
|
|
56507
56617
|
}
|
|
56508
56618
|
function groupParts(parts) {
|
|
@@ -56647,14 +56757,14 @@ var init_opencode_importer = __esm(() => {
|
|
|
56647
56757
|
init_redaction();
|
|
56648
56758
|
});
|
|
56649
56759
|
|
|
56650
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
56760
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.27+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/index.js
|
|
56651
56761
|
var init_dist8 = __esm(() => {
|
|
56652
56762
|
init_importer();
|
|
56653
56763
|
init_opencode_importer();
|
|
56654
56764
|
init_schema_sql2();
|
|
56655
56765
|
});
|
|
56656
56766
|
|
|
56657
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
56767
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/config/extensions.js
|
|
56658
56768
|
function collectExtensions(sourceName, sourceDir, extensions) {
|
|
56659
56769
|
if (extensions === undefined)
|
|
56660
56770
|
return [];
|
|
@@ -56670,7 +56780,7 @@ var init_extensions = __esm(() => {
|
|
|
56670
56780
|
init_dist5();
|
|
56671
56781
|
});
|
|
56672
56782
|
|
|
56673
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
56783
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/types.js
|
|
56674
56784
|
function createFinding(rule, message, filePath, extras = {}) {
|
|
56675
56785
|
return {
|
|
56676
56786
|
ruleId: rule.id,
|
|
@@ -56741,7 +56851,7 @@ var init_types3 = __esm(() => {
|
|
|
56741
56851
|
});
|
|
56742
56852
|
});
|
|
56743
56853
|
|
|
56744
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
56854
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/config/loader.js
|
|
56745
56855
|
async function loadPreset(name, options) {
|
|
56746
56856
|
const merged = await buildMergedRoots(options.roots.map((root) => resolvePath4(root)), options.fileSystem);
|
|
56747
56857
|
const presetPath = findMergedPreset(merged, name);
|
|
@@ -56956,7 +57066,7 @@ var init_loader2 = __esm(() => {
|
|
|
56956
57066
|
FIX_MODE_AUTHORITY = { none: 0, suggest: 1, auto: 2 };
|
|
56957
57067
|
});
|
|
56958
57068
|
|
|
56959
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57069
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/fixers/test-stub-fixer.js
|
|
56960
57070
|
function normalizeFindingPath(filePath) {
|
|
56961
57071
|
if (!filePath || isAbsolutePath2(filePath))
|
|
56962
57072
|
return null;
|
|
@@ -57021,7 +57131,7 @@ var init_test_stub_fixer = __esm(() => {
|
|
|
57021
57131
|
realFileSystem = createNodeFileSystem3();
|
|
57022
57132
|
});
|
|
57023
57133
|
|
|
57024
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57134
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/fixers/fixers.js
|
|
57025
57135
|
function registerBuiltinFixers(host, exec) {
|
|
57026
57136
|
const regexFixer = new RegexFixerProvider;
|
|
57027
57137
|
const pathFixer = new PathFixerProvider;
|
|
@@ -57224,7 +57334,7 @@ var init_fixers = __esm(() => {
|
|
|
57224
57334
|
};
|
|
57225
57335
|
});
|
|
57226
57336
|
|
|
57227
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
57337
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/agents/shims.js
|
|
57228
57338
|
function getAgentSessionCapability(agent) {
|
|
57229
57339
|
return AGENT_SESSION_CAPABILITY[agent];
|
|
57230
57340
|
}
|
|
@@ -57516,7 +57626,7 @@ var init_shims = __esm(() => {
|
|
|
57516
57626
|
ALIAS_TO_CANONICAL = Object.fromEntries(Object.values(AGENT_SHIMS).flatMap((shim) => (shim.aliases ?? []).map((alias3) => [alias3, shim.name])));
|
|
57517
57627
|
});
|
|
57518
57628
|
|
|
57519
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
57629
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/identity.js
|
|
57520
57630
|
function buildIdentityPreamble(ctx) {
|
|
57521
57631
|
const sections = [
|
|
57522
57632
|
`You are agent \`${ctx.agentId}\` (${ctx.agentType}) in workspace \`${ctx.workspace}\`.`
|
|
@@ -57576,7 +57686,7 @@ var init_identity = __esm(() => {
|
|
|
57576
57686
|
init_dist5();
|
|
57577
57687
|
});
|
|
57578
57688
|
|
|
57579
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
57689
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/slash-command.js
|
|
57580
57690
|
function isClaudeStyleSlashCommand(input) {
|
|
57581
57691
|
return SLASH_COMMAND_RE.test(input);
|
|
57582
57692
|
}
|
|
@@ -57604,7 +57714,7 @@ var init_slash_command = __esm(() => {
|
|
|
57604
57714
|
SLASH_COMMAND_RE = /^\/([a-zA-Z0-9._-]+):([a-zA-Z0-9._-]+)(\s.*)?$/;
|
|
57605
57715
|
});
|
|
57606
57716
|
|
|
57607
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
57717
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/ai-runner.js
|
|
57608
57718
|
function buildCorrelationEnv(correlation) {
|
|
57609
57719
|
return {
|
|
57610
57720
|
[AGENT_RUN_ID_ENV]: correlation.runId,
|
|
@@ -57740,7 +57850,7 @@ var init_ai_runner = __esm(() => {
|
|
|
57740
57850
|
init_slash_command();
|
|
57741
57851
|
});
|
|
57742
57852
|
|
|
57743
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
57853
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/agent-detector.js
|
|
57744
57854
|
class AgentDetector {
|
|
57745
57855
|
runner;
|
|
57746
57856
|
timeout;
|
|
@@ -57816,7 +57926,7 @@ var init_agent_detector = __esm(() => {
|
|
|
57816
57926
|
VERSION_PATTERN = /(?<version>\d+\.\d+(?:\.\d+)?)/;
|
|
57817
57927
|
});
|
|
57818
57928
|
|
|
57819
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
57929
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/agent-spec.js
|
|
57820
57930
|
function validateAgentId(id) {
|
|
57821
57931
|
if (!/^[a-z][a-z0-9_-]{1,63}$/.test(id)) {
|
|
57822
57932
|
throw new ValueError(`Invalid agent id "${id}": expected 2-64 chars, lowercase alphanumeric, "_" or "-"`);
|
|
@@ -57913,7 +58023,7 @@ var init_agent_spec = __esm(() => {
|
|
|
57913
58023
|
};
|
|
57914
58024
|
});
|
|
57915
58025
|
|
|
57916
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
58026
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/agents/auth-shims.js
|
|
57917
58027
|
function isNonEmpty(value) {
|
|
57918
58028
|
return value !== undefined && value.trim().length > 0;
|
|
57919
58029
|
}
|
|
@@ -58018,7 +58128,7 @@ var init_auth_shims = __esm(() => {
|
|
|
58018
58128
|
};
|
|
58019
58129
|
});
|
|
58020
58130
|
|
|
58021
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
58131
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/model-health-probe.js
|
|
58022
58132
|
class ModelHealthProbeRegistry {
|
|
58023
58133
|
probes = new Map;
|
|
58024
58134
|
register(providerPrefix, probe) {
|
|
@@ -58126,7 +58236,7 @@ var init_model_health_probe = __esm(() => {
|
|
|
58126
58236
|
};
|
|
58127
58237
|
});
|
|
58128
58238
|
|
|
58129
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
58239
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/doctor-runner.js
|
|
58130
58240
|
class DoctorRunner {
|
|
58131
58241
|
detector;
|
|
58132
58242
|
runner;
|
|
@@ -58263,15 +58373,15 @@ var init_doctor_runner = __esm(() => {
|
|
|
58263
58373
|
init_model_health_probe();
|
|
58264
58374
|
});
|
|
58265
58375
|
|
|
58266
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
58376
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/events.js
|
|
58267
58377
|
var init_events = () => {};
|
|
58268
58378
|
|
|
58269
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
58379
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/messages.js
|
|
58270
58380
|
function formatMessage(msg) {
|
|
58271
58381
|
return `[task from=${msg.fromId ?? "operator"} id=${msg.id}] ${msg.body}`;
|
|
58272
58382
|
}
|
|
58273
58383
|
|
|
58274
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
58384
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/team-agent-process.js
|
|
58275
58385
|
import { Buffer as Buffer5 } from "buffer";
|
|
58276
58386
|
|
|
58277
58387
|
class TeamAgentProcess {
|
|
@@ -58405,7 +58515,7 @@ var init_team_agent_process = __esm(() => {
|
|
|
58405
58515
|
init_dist5();
|
|
58406
58516
|
});
|
|
58407
58517
|
|
|
58408
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
58518
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/team-orchestrator.js
|
|
58409
58519
|
class TeamOrchestrator {
|
|
58410
58520
|
configDir;
|
|
58411
58521
|
inbox;
|
|
@@ -58534,7 +58644,7 @@ var init_team_orchestrator = __esm(() => {
|
|
|
58534
58644
|
init_team_agent_process();
|
|
58535
58645
|
});
|
|
58536
58646
|
|
|
58537
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
58647
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.27+7c83d7dc3b29919c/node_modules/@gobing-ai/ts-ai-runner/dist/index.js
|
|
58538
58648
|
var exports_dist3 = {};
|
|
58539
58649
|
__export(exports_dist3, {
|
|
58540
58650
|
validateAgentId: () => validateAgentId,
|
|
@@ -58586,7 +58696,7 @@ var init_dist9 = __esm(() => {
|
|
|
58586
58696
|
init_team_orchestrator();
|
|
58587
58697
|
});
|
|
58588
58698
|
|
|
58589
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58699
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/config-access.js
|
|
58590
58700
|
function stringArray(value) {
|
|
58591
58701
|
return Array.isArray(value) && value.every((item) => typeof item === "string") ? value : undefined;
|
|
58592
58702
|
}
|
|
@@ -58624,7 +58734,7 @@ function parseInlineFlags(source) {
|
|
|
58624
58734
|
return { flags, rest: source.slice(match[0].length) };
|
|
58625
58735
|
}
|
|
58626
58736
|
|
|
58627
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58737
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/glob-match.js
|
|
58628
58738
|
function matchesAny(path9, patterns) {
|
|
58629
58739
|
if (patterns === undefined || patterns.length === 0)
|
|
58630
58740
|
return true;
|
|
@@ -58672,7 +58782,7 @@ function escapeRegExp(value) {
|
|
|
58672
58782
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
58673
58783
|
}
|
|
58674
58784
|
|
|
58675
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58785
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/file-discovery.js
|
|
58676
58786
|
async function discoverFiles2(options) {
|
|
58677
58787
|
const fs3 = options.fs ?? createNodeFileSystem3();
|
|
58678
58788
|
const allFiles = await walkDir2(options.workdir, fs3, DEFAULT_EXCLUDES);
|
|
@@ -58700,12 +58810,12 @@ var init_file_discovery = __esm(() => {
|
|
|
58700
58810
|
DEFAULT_EXCLUDES = new Set([".git", "node_modules", "dist", ".coverage", ".astro", ".wrangler"]);
|
|
58701
58811
|
});
|
|
58702
58812
|
|
|
58703
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58813
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/file-utils.js
|
|
58704
58814
|
var init_file_utils = __esm(() => {
|
|
58705
58815
|
init_file_discovery();
|
|
58706
58816
|
});
|
|
58707
58817
|
|
|
58708
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58818
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/agent-detection-evaluator.js
|
|
58709
58819
|
class AgentDetectionEvaluator {
|
|
58710
58820
|
detector;
|
|
58711
58821
|
constructor(detector = new AgentDetector) {
|
|
@@ -58733,7 +58843,7 @@ var init_agent_detection_evaluator = __esm(() => {
|
|
|
58733
58843
|
init_file_utils();
|
|
58734
58844
|
});
|
|
58735
58845
|
|
|
58736
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58846
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/coverage-gate-evaluator.js
|
|
58737
58847
|
class CoverageGateEvaluator {
|
|
58738
58848
|
constructor() {}
|
|
58739
58849
|
async evaluate(rule, context4) {
|
|
@@ -58817,7 +58927,7 @@ var init_coverage_gate_evaluator = __esm(() => {
|
|
|
58817
58927
|
init_file_utils();
|
|
58818
58928
|
});
|
|
58819
58929
|
|
|
58820
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58930
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/exit-code-evaluator.js
|
|
58821
58931
|
class ExitCodeEvaluator {
|
|
58822
58932
|
executor;
|
|
58823
58933
|
constructor(executor = nodeBunFactory3.createProcessExecutor()) {
|
|
@@ -58853,7 +58963,7 @@ var init_exit_code_evaluator = __esm(() => {
|
|
|
58853
58963
|
init_file_utils();
|
|
58854
58964
|
});
|
|
58855
58965
|
|
|
58856
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58966
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/forbidden-import-evaluator.js
|
|
58857
58967
|
class ForbiddenImportEvaluator {
|
|
58858
58968
|
constructor() {}
|
|
58859
58969
|
async evaluate(rule, context4) {
|
|
@@ -58934,7 +59044,7 @@ var init_forbidden_import_evaluator = __esm(() => {
|
|
|
58934
59044
|
init_file_utils();
|
|
58935
59045
|
});
|
|
58936
59046
|
|
|
58937
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59047
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/import-boundary-evaluator.js
|
|
58938
59048
|
class ImportBoundaryEvaluator {
|
|
58939
59049
|
async evaluate(rule, context4) {
|
|
58940
59050
|
const config4 = rule.evaluator.config ?? {};
|
|
@@ -59027,7 +59137,7 @@ var init_import_boundary_evaluator = __esm(() => {
|
|
|
59027
59137
|
init_file_utils();
|
|
59028
59138
|
});
|
|
59029
59139
|
|
|
59030
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59140
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/path-evaluator.js
|
|
59031
59141
|
class PathEvaluator {
|
|
59032
59142
|
constructor() {}
|
|
59033
59143
|
async evaluate(rule, context4) {
|
|
@@ -59088,7 +59198,7 @@ var init_path_evaluator = __esm(() => {
|
|
|
59088
59198
|
init_file_utils();
|
|
59089
59199
|
});
|
|
59090
59200
|
|
|
59091
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59201
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/regex-evaluator.js
|
|
59092
59202
|
class RegexEvaluator {
|
|
59093
59203
|
constructor() {}
|
|
59094
59204
|
async evaluate(rule, context4) {
|
|
@@ -59166,7 +59276,7 @@ var init_regex_evaluator = __esm(() => {
|
|
|
59166
59276
|
init_file_utils();
|
|
59167
59277
|
});
|
|
59168
59278
|
|
|
59169
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59279
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/ripgrep-evaluator.js
|
|
59170
59280
|
class RipgrepEvaluator {
|
|
59171
59281
|
executor;
|
|
59172
59282
|
constructor(executor = nodeBunFactory3.createProcessExecutor()) {
|
|
@@ -59259,7 +59369,7 @@ var init_ripgrep_evaluator = __esm(() => {
|
|
|
59259
59369
|
init_file_utils();
|
|
59260
59370
|
});
|
|
59261
59371
|
|
|
59262
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59372
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/schema-artifact-evaluator.js
|
|
59263
59373
|
class SchemaArtifactEvaluator {
|
|
59264
59374
|
constructor() {}
|
|
59265
59375
|
async evaluate(rule, context4) {
|
|
@@ -59337,7 +59447,7 @@ var init_schema_artifact_evaluator = __esm(() => {
|
|
|
59337
59447
|
init_file_utils();
|
|
59338
59448
|
});
|
|
59339
59449
|
|
|
59340
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59450
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/secrets-scanner-evaluator.js
|
|
59341
59451
|
class SecretsScannerEvaluator {
|
|
59342
59452
|
constructor() {}
|
|
59343
59453
|
async evaluate(rule, context4) {
|
|
@@ -59405,7 +59515,7 @@ var init_secrets_scanner_evaluator = __esm(() => {
|
|
|
59405
59515
|
ALL_CATEGORIES = Object.keys(BUILTIN_PATTERNS);
|
|
59406
59516
|
});
|
|
59407
59517
|
|
|
59408
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59518
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/sg-evaluator.js
|
|
59409
59519
|
class SgEvaluator {
|
|
59410
59520
|
executor;
|
|
59411
59521
|
constructor(executor = nodeBunFactory3.createProcessExecutor()) {
|
|
@@ -59502,7 +59612,7 @@ var init_sg_evaluator = __esm(() => {
|
|
|
59502
59612
|
init_file_utils();
|
|
59503
59613
|
});
|
|
59504
59614
|
|
|
59505
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59615
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/resolvers/test-path-resolver.js
|
|
59506
59616
|
class TypeScriptTestPathResolver {
|
|
59507
59617
|
name = "typescript";
|
|
59508
59618
|
constructor() {}
|
|
@@ -59585,7 +59695,7 @@ function testify(rel) {
|
|
|
59585
59695
|
return `${dir}test_${base2}`;
|
|
59586
59696
|
}
|
|
59587
59697
|
|
|
59588
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59698
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/test-location-evaluator.js
|
|
59589
59699
|
class TestLocationEvaluator {
|
|
59590
59700
|
resolvers;
|
|
59591
59701
|
constructor(resolvers) {
|
|
@@ -59660,7 +59770,7 @@ var init_test_location_evaluator = __esm(() => {
|
|
|
59660
59770
|
TYPESCRIPT_FALLBACK = new TypeScriptTestPathResolver;
|
|
59661
59771
|
});
|
|
59662
59772
|
|
|
59663
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59773
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/tsdoc-export-evaluator.js
|
|
59664
59774
|
class TsdocExportEvaluator {
|
|
59665
59775
|
constructor() {}
|
|
59666
59776
|
async evaluate(rule, context4) {
|
|
@@ -59745,7 +59855,7 @@ var init_tsdoc_export_evaluator = __esm(() => {
|
|
|
59745
59855
|
};
|
|
59746
59856
|
});
|
|
59747
59857
|
|
|
59748
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59858
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/formatters/json.js
|
|
59749
59859
|
class JsonFormatter {
|
|
59750
59860
|
constructor() {}
|
|
59751
59861
|
format(result) {
|
|
@@ -59753,7 +59863,7 @@ class JsonFormatter {
|
|
|
59753
59863
|
}
|
|
59754
59864
|
}
|
|
59755
59865
|
|
|
59756
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59866
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/formatters/text.js
|
|
59757
59867
|
class TextFormatter {
|
|
59758
59868
|
constructor() {}
|
|
59759
59869
|
format(result) {
|
|
@@ -59767,7 +59877,7 @@ class TextFormatter {
|
|
|
59767
59877
|
}
|
|
59768
59878
|
}
|
|
59769
59879
|
|
|
59770
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59880
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/host/builtins.js
|
|
59771
59881
|
function registerBuiltins(host, executor) {
|
|
59772
59882
|
const path9 = new PathEvaluator;
|
|
59773
59883
|
host.evaluators.register("regex", new RegexEvaluator, "builtin");
|
|
@@ -59807,7 +59917,7 @@ var init_builtins = __esm(() => {
|
|
|
59807
59917
|
init_tsdoc_export_evaluator();
|
|
59808
59918
|
});
|
|
59809
59919
|
|
|
59810
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59920
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/host/rule-engine-host.js
|
|
59811
59921
|
class RuleEngineHost {
|
|
59812
59922
|
evaluators;
|
|
59813
59923
|
formatters;
|
|
@@ -59824,7 +59934,7 @@ var init_rule_engine_host = __esm(() => {
|
|
|
59824
59934
|
init_extension2();
|
|
59825
59935
|
});
|
|
59826
59936
|
|
|
59827
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
59937
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/engine.js
|
|
59828
59938
|
class RuleEngine {
|
|
59829
59939
|
host;
|
|
59830
59940
|
events;
|
|
@@ -59995,7 +60105,7 @@ var init_engine = __esm(() => {
|
|
|
59995
60105
|
init_types3();
|
|
59996
60106
|
});
|
|
59997
60107
|
|
|
59998
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
60108
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/host/bundled-rules.js
|
|
59999
60109
|
async function bundledRulesRoot() {
|
|
60000
60110
|
if (cachedRoot2 !== undefined)
|
|
60001
60111
|
return cachedRoot2;
|
|
@@ -60046,7 +60156,7 @@ var init_bundled_rules = __esm(() => {
|
|
|
60046
60156
|
init_dist5();
|
|
60047
60157
|
});
|
|
60048
60158
|
|
|
60049
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
60159
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/persistence/db-adapter.js
|
|
60050
60160
|
class DbRulePersistenceAdapter {
|
|
60051
60161
|
db;
|
|
60052
60162
|
constructor(db2) {
|
|
@@ -60080,7 +60190,7 @@ class DbRulePersistenceAdapter {
|
|
|
60080
60190
|
}
|
|
60081
60191
|
}
|
|
60082
60192
|
|
|
60083
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
60193
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/persistence/schema.js
|
|
60084
60194
|
var RULE_ENGINE_SCHEMA_SQL = `
|
|
60085
60195
|
CREATE TABLE IF NOT EXISTS rule_runs (
|
|
60086
60196
|
id TEXT PRIMARY KEY,
|
|
@@ -60126,10 +60236,10 @@ CREATE TABLE IF NOT EXISTS rule_eval_runs (
|
|
|
60126
60236
|
CREATE INDEX IF NOT EXISTS idx_rule_eval_runs_run_id ON rule_eval_runs (run_id);
|
|
60127
60237
|
`;
|
|
60128
60238
|
|
|
60129
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
60239
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/persistence/index.js
|
|
60130
60240
|
var init_persistence2 = () => {};
|
|
60131
60241
|
|
|
60132
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
60242
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.27+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/index.js
|
|
60133
60243
|
var init_dist10 = __esm(() => {
|
|
60134
60244
|
init_extensions();
|
|
60135
60245
|
init_loader2();
|
|
@@ -60206,6 +60316,11 @@ async function applyCliMigrations(adapter, migrations = CLI_MIGRATIONS) {
|
|
|
60206
60316
|
const existing = await adapter.queryFirst('SELECT id FROM "__spur_cli_migrations" WHERE id = ?', migration.id);
|
|
60207
60317
|
if (existing != null)
|
|
60208
60318
|
continue;
|
|
60319
|
+
if (migration.id === "0009_spur_cli_history_message_run_idx" && !await tableExists(adapter, "history_message")) {
|
|
60320
|
+
for (const statement of splitSqlStatements(HISTORY_IMPORT_SCHEMA_SQL)) {
|
|
60321
|
+
await adapter.exec(statement);
|
|
60322
|
+
}
|
|
60323
|
+
}
|
|
60209
60324
|
const addColumnGuard = migration.addColumnIfMissing;
|
|
60210
60325
|
const shouldApplySql = addColumnGuard === undefined || !await columnExists(adapter, addColumnGuard.table, addColumnGuard.column);
|
|
60211
60326
|
if (shouldApplySql) {
|
|
@@ -60235,6 +60350,10 @@ async function columnExists(adapter, table3, column2) {
|
|
|
60235
60350
|
const rows = await adapter.queryAll(`PRAGMA table_info("${table3}")`);
|
|
60236
60351
|
return rows.some((row) => row.name === column2);
|
|
60237
60352
|
}
|
|
60353
|
+
async function tableExists(adapter, table3) {
|
|
60354
|
+
const row = await adapter.queryFirst("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?", table3);
|
|
60355
|
+
return row != null;
|
|
60356
|
+
}
|
|
60238
60357
|
function splitSqlStatements(sql4) {
|
|
60239
60358
|
return sql4.split(";").map((statement) => statement.trim()).filter(Boolean);
|
|
60240
60359
|
}
|
|
@@ -60352,7 +60471,7 @@ ${SYSTEM_EVENTS_SCHEMA_SQL}
|
|
|
60352
60471
|
];
|
|
60353
60472
|
});
|
|
60354
60473
|
|
|
60355
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
60474
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/job-queue/db-job-queue.js
|
|
60356
60475
|
function queueLogger() {
|
|
60357
60476
|
if (!_queueLogger)
|
|
60358
60477
|
_queueLogger = getLogger2("job-queue");
|
|
@@ -60629,7 +60748,7 @@ var init_db_job_queue = __esm(() => {
|
|
|
60629
60748
|
init_tracing2();
|
|
60630
60749
|
});
|
|
60631
60750
|
|
|
60632
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
60751
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/job-queue-db.js
|
|
60633
60752
|
var exports_job_queue_db = {};
|
|
60634
60753
|
__export(exports_job_queue_db, {
|
|
60635
60754
|
DBQueueConsumer: () => DBQueueConsumer,
|
|
@@ -62732,12 +62851,14 @@ __export(exports_src, {
|
|
|
62732
62851
|
normalizeTaskStatus: () => normalizeTaskStatus,
|
|
62733
62852
|
normalizeFeatureStatus: () => normalizeFeatureStatus,
|
|
62734
62853
|
normalizeCapabilityTier: () => normalizeCapabilityTier,
|
|
62854
|
+
normalizeAcFence: () => normalizeAcFence,
|
|
62735
62855
|
messageRollup: () => messageRollup,
|
|
62736
62856
|
mergeStubs: () => mergeStubs,
|
|
62737
62857
|
matrixEntrySchema: () => matrixEntrySchema,
|
|
62738
62858
|
matchEtlPayloads: () => matchEtlPayloads,
|
|
62739
62859
|
matchEtlForAction: () => matchEtlForAction,
|
|
62740
62860
|
loops: () => loops,
|
|
62861
|
+
looksLikeGherkinAc: () => looksLikeGherkinAc,
|
|
62741
62862
|
loadSqlMigrations: () => loadSqlMigrations,
|
|
62742
62863
|
loadAllEtlPayloads: () => loadAllEtlPayloads,
|
|
62743
62864
|
isTierEligible: () => isTierEligible,
|
|
@@ -64757,6 +64878,10 @@ function hasAdjacentFileLineColumns(body) {
|
|
|
64757
64878
|
}
|
|
64758
64879
|
return false;
|
|
64759
64880
|
}
|
|
64881
|
+
function hasSolutionFileLineCitation(body) {
|
|
64882
|
+
const hasFileLine = /`[^`]+?:\d+(-\d+)?`/.test(body) || /[^\s`]\.\w+:\d+/.test(body);
|
|
64883
|
+
return hasFileLine || hasAdjacentFileLineColumns(body);
|
|
64884
|
+
}
|
|
64760
64885
|
var TaskCheckService;
|
|
64761
64886
|
var init_task_check = __esm(() => {
|
|
64762
64887
|
init_src2();
|
|
@@ -64899,18 +65024,14 @@ var init_task_check = __esm(() => {
|
|
|
64899
65024
|
}
|
|
64900
65025
|
}
|
|
64901
65026
|
const solBody = doc2.getSection("Solution");
|
|
64902
|
-
if (solBody !== null && !isPlaceholderBody(solBody)) {
|
|
64903
|
-
|
|
64904
|
-
|
|
64905
|
-
|
|
64906
|
-
|
|
64907
|
-
|
|
64908
|
-
|
|
64909
|
-
|
|
64910
|
-
section: "Solution",
|
|
64911
|
-
message: "Solution must contain at least one `file:line` citation"
|
|
64912
|
-
});
|
|
64913
|
-
}
|
|
65027
|
+
if (solBody !== null && !isPlaceholderBody(solBody) && !hasSolutionFileLineCitation(solBody)) {
|
|
65028
|
+
findings.push({
|
|
65029
|
+
layer: "L3",
|
|
65030
|
+
code: FINDING_CODES.L3_SOLUTION_FILE_LINE,
|
|
65031
|
+
severity: "error",
|
|
65032
|
+
section: "Solution",
|
|
65033
|
+
message: "Solution must contain at least one `file:line` citation"
|
|
65034
|
+
});
|
|
64914
65035
|
}
|
|
64915
65036
|
const revBody = doc2.getSection("Review");
|
|
64916
65037
|
const revRequired = (entry?.required ?? []).includes("Review");
|
|
@@ -66801,7 +66922,8 @@ class FeatureService {
|
|
|
66801
66922
|
const slug = basename2(f.filePath).replace(/^[A-Z][1-9]*_/, "").replace(/\.md$/, "");
|
|
66802
66923
|
const newPath = `${this.ctx.featuresDir}/${newId}_${slug}.md`;
|
|
66803
66924
|
removed.push({ path: f.filePath, content: raw });
|
|
66804
|
-
|
|
66925
|
+
const movedContent = doc2.serialize().replace(/^#\s+[A-Z][1-9]*:/m, `# ${newId}:`);
|
|
66926
|
+
await atomicWriteAsync(newPath, movedContent, newId, this.ctx.fs, this.ctx.projectName ?? "spur");
|
|
66805
66927
|
created.push(newPath);
|
|
66806
66928
|
if (newPath !== f.filePath)
|
|
66807
66929
|
await this.ctx.fs.deleteFile(f.filePath);
|
|
@@ -67142,7 +67264,9 @@ class HistoryService {
|
|
|
67142
67264
|
toolCalls: r.toolCalls,
|
|
67143
67265
|
tokens: r.tokens ?? 0,
|
|
67144
67266
|
costUsd: r.costUsd ?? 0,
|
|
67145
|
-
topTool: r.topTool
|
|
67267
|
+
topTool: r.topTool,
|
|
67268
|
+
assistantDurationMs: r.assistantDurationMs ?? 0,
|
|
67269
|
+
assistantDurationUnmeasured: r.assistantDurationUnmeasured
|
|
67146
67270
|
})),
|
|
67147
67271
|
loops: loopRows,
|
|
67148
67272
|
warnings: [...buildWarnings(driftRows, coverage), ...opts.extraWarnings ?? []]
|
|
@@ -67211,7 +67335,15 @@ class HistoryService {
|
|
|
67211
67335
|
} finally {
|
|
67212
67336
|
clearTimeout(timer);
|
|
67213
67337
|
}
|
|
67214
|
-
const
|
|
67338
|
+
const hasDegradedInput = result.parseErrors.length > 0 || result.validationErrors.length > 0;
|
|
67339
|
+
const status = result.scannedFiles === 0 ? "empty" : hasDegradedInput ? "degraded" : "ok";
|
|
67340
|
+
if (hasDegradedInput) {
|
|
67341
|
+
sourceWarnings.push({
|
|
67342
|
+
code: "source-degraded",
|
|
67343
|
+
source,
|
|
67344
|
+
detail: `source '${source}' imported ${result.importedRecords} records but skipped ` + `${result.parseErrors.length} parse and ${result.validationErrors.length} ` + "validation error(s); samples are bounded in the artifact and streamed to the sidecar"
|
|
67345
|
+
});
|
|
67346
|
+
}
|
|
67215
67347
|
if (status === "empty" && wasNonEmpty) {
|
|
67216
67348
|
sourceWarnings.push({
|
|
67217
67349
|
code: "source-was-nonempty",
|
|
@@ -67230,7 +67362,8 @@ class HistoryService {
|
|
|
67230
67362
|
parseErrors: result.parseErrors.length,
|
|
67231
67363
|
validationErrors: result.validationErrors.length,
|
|
67232
67364
|
parseErrorSamples: result.parseErrors.slice(0, MAX_ERROR_SAMPLES).map(formatIssue),
|
|
67233
|
-
validationErrorSamples: result.validationErrors.slice(0, MAX_ERROR_SAMPLES).map(formatIssue)
|
|
67365
|
+
validationErrorSamples: result.validationErrors.slice(0, MAX_ERROR_SAMPLES).map(formatIssue),
|
|
67366
|
+
...result.reconciliation ? { reconciliation: result.reconciliation } : {}
|
|
67234
67367
|
};
|
|
67235
67368
|
return { coverageEntry, sourceWarnings };
|
|
67236
67369
|
} catch (e) {
|
|
@@ -67267,7 +67400,9 @@ function emptyTotals() {
|
|
|
67267
67400
|
messages: 0,
|
|
67268
67401
|
toolCalls: 0,
|
|
67269
67402
|
durationMs: 0,
|
|
67270
|
-
durationUnmeasured: 0
|
|
67403
|
+
durationUnmeasured: 0,
|
|
67404
|
+
assistantDurationMs: 0,
|
|
67405
|
+
assistantDurationUnmeasured: 0
|
|
67271
67406
|
};
|
|
67272
67407
|
}
|
|
67273
67408
|
function foldMessage(bucket, row) {
|
|
@@ -67279,6 +67414,8 @@ function foldMessage(bucket, row) {
|
|
|
67279
67414
|
bucket.cacheWriteTokens += row.cacheWriteTokens ?? 0;
|
|
67280
67415
|
bucket.costUsd += row.costUsd ?? 0;
|
|
67281
67416
|
bucket.recordsWithUsage += row.recordsWithUsage;
|
|
67417
|
+
bucket.assistantDurationMs += row.assistantDurationMs ?? 0;
|
|
67418
|
+
bucket.assistantDurationUnmeasured += row.assistantDurationUnmeasured;
|
|
67282
67419
|
}
|
|
67283
67420
|
function foldTool(bucket, row) {
|
|
67284
67421
|
bucket.toolCalls += row.toolCalls;
|
|
@@ -67321,11 +67458,11 @@ function buildCoverage(sourceRows, tRows, driftRows, coverageErrors, importCover
|
|
|
67321
67458
|
for (const row of sourceRows)
|
|
67322
67459
|
sqlBySource.set(row.source, row);
|
|
67323
67460
|
return importCoverage.map((imp) => {
|
|
67324
|
-
if (imp.status === "ok") {
|
|
67461
|
+
if (imp.status === "ok" || imp.status === "degraded") {
|
|
67325
67462
|
const sql4 = sqlBySource.get(imp.source);
|
|
67326
67463
|
return {
|
|
67327
67464
|
source: imp.source,
|
|
67328
|
-
status:
|
|
67465
|
+
status: imp.status,
|
|
67329
67466
|
files: sql4?.files ?? imp.files,
|
|
67330
67467
|
messages: sql4?.messages ?? imp.messages,
|
|
67331
67468
|
toolCalls: toolCounts2[imp.source] ?? 0,
|
|
@@ -67334,7 +67471,8 @@ function buildCoverage(sourceRows, tRows, driftRows, coverageErrors, importCover
|
|
|
67334
67471
|
parseErrors: imp.parseErrors,
|
|
67335
67472
|
validationErrors: imp.validationErrors,
|
|
67336
67473
|
parseErrorSamples: imp.parseErrorSamples,
|
|
67337
|
-
validationErrorSamples: imp.validationErrorSamples
|
|
67474
|
+
validationErrorSamples: imp.validationErrorSamples,
|
|
67475
|
+
...imp.reconciliation ? { reconciliation: imp.reconciliation } : {}
|
|
67338
67476
|
};
|
|
67339
67477
|
}
|
|
67340
67478
|
return imp;
|
|
@@ -67348,9 +67486,10 @@ function buildCoverage(sourceRows, tRows, driftRows, coverageErrors, importCover
|
|
|
67348
67486
|
unknownCounts[row.source] = (unknownCounts[row.source] ?? 0) + row.n;
|
|
67349
67487
|
return sourceRows.map((s2) => {
|
|
67350
67488
|
const err = coverageErrors?.[s2.source] ?? { parseErrors: [], validationErrors: [] };
|
|
67489
|
+
const hasErrors = err.parseErrors.length > 0 || err.validationErrors.length > 0;
|
|
67351
67490
|
return {
|
|
67352
67491
|
source: s2.source,
|
|
67353
|
-
status: s2.messages > 0 ? "ok" : "empty",
|
|
67492
|
+
status: s2.messages > 0 ? hasErrors ? "degraded" : "ok" : "empty",
|
|
67354
67493
|
files: s2.files,
|
|
67355
67494
|
messages: s2.messages,
|
|
67356
67495
|
toolCalls: toolCounts[s2.source] ?? 0,
|
|
@@ -67375,6 +67514,13 @@ function buildWarnings(driftRows, coverage) {
|
|
|
67375
67514
|
if (entry.status === "empty") {
|
|
67376
67515
|
warnings.push({ code: "source-empty", source: entry.source, detail: "0 messages discovered" });
|
|
67377
67516
|
}
|
|
67517
|
+
if (entry.status === "degraded") {
|
|
67518
|
+
warnings.push({
|
|
67519
|
+
code: "source-degraded",
|
|
67520
|
+
source: entry.source,
|
|
67521
|
+
detail: `${entry.parseErrors} parse and ${entry.validationErrors} validation error(s) \u2014 ` + "source imported with skipped records (task 0504 R2)"
|
|
67522
|
+
});
|
|
67523
|
+
}
|
|
67378
67524
|
}
|
|
67379
67525
|
return warnings;
|
|
67380
67526
|
}
|
|
@@ -67477,7 +67623,8 @@ function parseMode(value) {
|
|
|
67477
67623
|
}
|
|
67478
67624
|
function computeExitCode(entries) {
|
|
67479
67625
|
const failed = entries.filter((e) => e.status === "failed").length;
|
|
67480
|
-
|
|
67626
|
+
const degraded = entries.filter((e) => e.status === "degraded").length;
|
|
67627
|
+
if (failed === 0 && degraded === 0)
|
|
67481
67628
|
return 0;
|
|
67482
67629
|
if (failed === entries.length)
|
|
67483
67630
|
return 1;
|
|
@@ -67791,7 +67938,8 @@ function applyMutation(doc2, mutation) {
|
|
|
67791
67938
|
break;
|
|
67792
67939
|
case "updateSection":
|
|
67793
67940
|
if (mutation.sectionName !== undefined && mutation.sectionBody !== undefined) {
|
|
67794
|
-
|
|
67941
|
+
const body = mutation.sectionName.toLowerCase() === "acceptance criteria" ? normalizeAcFence(mutation.sectionBody) : mutation.sectionBody;
|
|
67942
|
+
doc2.replaceSection(mutation.sectionName, body);
|
|
67795
67943
|
}
|
|
67796
67944
|
break;
|
|
67797
67945
|
case "updateBody":
|
|
@@ -69965,7 +70113,7 @@ function renderCreatedTaskContent(params) {
|
|
|
69965
70113
|
sectionPatches.Plan = (params.plan ?? "").trim();
|
|
69966
70114
|
}
|
|
69967
70115
|
if ((params.acceptanceCriteria ?? "").trim() !== "") {
|
|
69968
|
-
sectionPatches["Acceptance Criteria"] = (params.acceptanceCriteria ?? "").trim();
|
|
70116
|
+
sectionPatches["Acceptance Criteria"] = normalizeAcFence((params.acceptanceCriteria ?? "").trim());
|
|
69969
70117
|
}
|
|
69970
70118
|
if (Object.keys(sectionPatches).length > 0) {
|
|
69971
70119
|
const doc2 = MarkdownDocument.parse(content, "task");
|
|
@@ -70053,7 +70201,7 @@ class TaskService {
|
|
|
70053
70201
|
return { ...templateBodies, ...taskBodies };
|
|
70054
70202
|
}
|
|
70055
70203
|
async findDuplicateFollowUp(featureId2, title, withinSec) {
|
|
70056
|
-
const siblings = await this.list({ featureId: featureId2 });
|
|
70204
|
+
const siblings = featureId2 !== undefined ? await this.list({ featureId: featureId2 }) : (await this.list()).filter((t) => (t.frontmatter?.feature_id ?? undefined) === undefined);
|
|
70057
70205
|
const now2 = Date.now();
|
|
70058
70206
|
const lowerTitle = title.toLowerCase();
|
|
70059
70207
|
for (const t of siblings) {
|
|
@@ -70082,7 +70230,7 @@ class TaskService {
|
|
|
70082
70230
|
const status = params.status ?? (params.featureId !== undefined ? "todo" : "backlog");
|
|
70083
70231
|
return this.writeService.createAllocated(folder, async () => {
|
|
70084
70232
|
const dedupeWithinSec = params.dedupeWithinSec === null ? undefined : params.dedupeWithinSec ?? 300;
|
|
70085
|
-
if (dedupeWithinSec !== undefined
|
|
70233
|
+
if (dedupeWithinSec !== undefined) {
|
|
70086
70234
|
const collision = await this.findDuplicateFollowUp(params.featureId, params.title, dedupeWithinSec);
|
|
70087
70235
|
if (collision !== null) {
|
|
70088
70236
|
throw new DuplicateFollowUpError(collision.wbs, collision.name, params.title);
|
|
@@ -70372,6 +70520,9 @@ class TaskService {
|
|
|
70372
70520
|
const filePath = await this.resolveTaskFile(wbs);
|
|
70373
70521
|
const raw = await this.ctx.fs.readFile(sourceFile);
|
|
70374
70522
|
const body = stripLeadingSectionHeader2(raw, sectionName);
|
|
70523
|
+
if (sectionName === "Solution" && !hasSolutionFileLineCitation(body)) {
|
|
70524
|
+
throw new SectionMutationError("invalid-solution", "Solution must contain at least one `file:line` citation");
|
|
70525
|
+
}
|
|
70375
70526
|
const ref = { kind: "task", id: wbs, filePath, folder: this.ctx.tasksDir };
|
|
70376
70527
|
const result = await this.writeService.updateSection(ref, sectionName, body);
|
|
70377
70528
|
if (sectionName === "Acceptance Criteria") {
|
|
@@ -70633,7 +70784,7 @@ ${issues}`);
|
|
|
70633
70784
|
taskBodies.Plan = (item.plan ?? "").trim();
|
|
70634
70785
|
}
|
|
70635
70786
|
if ((item.acceptance_criteria ?? "").trim() !== "") {
|
|
70636
|
-
taskBodies["Acceptance Criteria"] = (item.acceptance_criteria ?? "").trim();
|
|
70787
|
+
taskBodies["Acceptance Criteria"] = normalizeAcFence((item.acceptance_criteria ?? "").trim());
|
|
70637
70788
|
}
|
|
70638
70789
|
const content = buildTaskSkeleton({
|
|
70639
70790
|
wbs,
|
|
@@ -70835,6 +70986,7 @@ var init_task_service = __esm(() => {
|
|
|
70835
70986
|
init_src2();
|
|
70836
70987
|
init_errors5();
|
|
70837
70988
|
init_pipeline_run_link();
|
|
70989
|
+
init_task_check();
|
|
70838
70990
|
init_task_locator();
|
|
70839
70991
|
init_task_record();
|
|
70840
70992
|
DependencyMutationError = class DependencyMutationError extends Error {
|
|
@@ -71153,7 +71305,7 @@ var init_task_verdict = __esm(() => {
|
|
|
71153
71305
|
});
|
|
71154
71306
|
|
|
71155
71307
|
// ../../packages/app/src/services/team-service.ts
|
|
71156
|
-
import { join as join16 } from "path";
|
|
71308
|
+
import { join as join16, resolve as resolve6 } from "path";
|
|
71157
71309
|
|
|
71158
71310
|
class TeamService {
|
|
71159
71311
|
ctx;
|
|
@@ -71361,13 +71513,18 @@ class TeamService {
|
|
|
71361
71513
|
const specs = await loadAgentSpecs(this.configDir);
|
|
71362
71514
|
const config4 = await this.loadTeamConfig();
|
|
71363
71515
|
const teams = new Map;
|
|
71516
|
+
const configTeamIds = new Set;
|
|
71364
71517
|
if (config4?.agent?.team) {
|
|
71365
71518
|
for (const [teamId, teamConfig] of Object.entries(config4.agent.team)) {
|
|
71519
|
+
configTeamIds.add(teamId);
|
|
71520
|
+
const workDir = this.resolveWorkspaceDir(teamConfig.work_dir);
|
|
71366
71521
|
teams.set(teamId, {
|
|
71367
71522
|
teamId,
|
|
71368
71523
|
name: teamConfig.name,
|
|
71369
71524
|
members: [],
|
|
71370
|
-
specs: []
|
|
71525
|
+
specs: [],
|
|
71526
|
+
workDir,
|
|
71527
|
+
isCurrentProject: this.isCurrentProject(workDir)
|
|
71371
71528
|
});
|
|
71372
71529
|
}
|
|
71373
71530
|
}
|
|
@@ -71384,7 +71541,9 @@ class TeamService {
|
|
|
71384
71541
|
teamId,
|
|
71385
71542
|
name: teamId,
|
|
71386
71543
|
members: [],
|
|
71387
|
-
specs: [spec]
|
|
71544
|
+
specs: [spec],
|
|
71545
|
+
workDir: null,
|
|
71546
|
+
isCurrentProject: false
|
|
71388
71547
|
});
|
|
71389
71548
|
}
|
|
71390
71549
|
} else {
|
|
@@ -71396,9 +71555,18 @@ class TeamService {
|
|
|
71396
71555
|
teamId: "__untethered__",
|
|
71397
71556
|
name: "Untethered",
|
|
71398
71557
|
members: [],
|
|
71399
|
-
specs: untethered
|
|
71558
|
+
specs: untethered,
|
|
71559
|
+
workDir: null,
|
|
71560
|
+
isCurrentProject: false
|
|
71400
71561
|
});
|
|
71401
71562
|
}
|
|
71563
|
+
for (const team of Array.from(teams.values())) {
|
|
71564
|
+
if (configTeamIds.has(team.teamId))
|
|
71565
|
+
continue;
|
|
71566
|
+
const common4 = this.commonWorkspace(team.specs);
|
|
71567
|
+
team.workDir = common4.workDir;
|
|
71568
|
+
team.isCurrentProject = common4.isCurrentProject;
|
|
71569
|
+
}
|
|
71402
71570
|
return Array.from(teams.values());
|
|
71403
71571
|
}
|
|
71404
71572
|
async materializeTeam(teamId, opts) {
|
|
@@ -71487,6 +71655,23 @@ class TeamService {
|
|
|
71487
71655
|
});
|
|
71488
71656
|
return result;
|
|
71489
71657
|
}
|
|
71658
|
+
resolveWorkspaceDir(p) {
|
|
71659
|
+
return resolve6(this.ctx.cwd, p);
|
|
71660
|
+
}
|
|
71661
|
+
isCurrentProject(workDir) {
|
|
71662
|
+
return resolve6(this.ctx.cwd, workDir) === resolve6(this.ctx.cwd, this.ctx.cwd);
|
|
71663
|
+
}
|
|
71664
|
+
commonWorkspace(specs) {
|
|
71665
|
+
if (specs.length === 0)
|
|
71666
|
+
return { workDir: null, isCurrentProject: false };
|
|
71667
|
+
const first = specs[0]?.workspace;
|
|
71668
|
+
if (typeof first !== "string" || first.length === 0)
|
|
71669
|
+
return { workDir: null, isCurrentProject: false };
|
|
71670
|
+
if (!specs.every((s2) => s2.workspace === first))
|
|
71671
|
+
return { workDir: null, isCurrentProject: false };
|
|
71672
|
+
const workDir = this.resolveWorkspaceDir(first);
|
|
71673
|
+
return { workDir, isCurrentProject: this.isCurrentProject(workDir) };
|
|
71674
|
+
}
|
|
71490
71675
|
async loadTeamConfig() {
|
|
71491
71676
|
try {
|
|
71492
71677
|
return await loadSpurConfig(this.ctx.cwd);
|
|
@@ -71924,16 +72109,16 @@ class WorkflowSteeringController {
|
|
|
71924
72109
|
active.state = "boundary";
|
|
71925
72110
|
active.version += 1;
|
|
71926
72111
|
this.publishState(active);
|
|
71927
|
-
return await new Promise((
|
|
72112
|
+
return await new Promise((resolve7) => {
|
|
71928
72113
|
const settle = (decision) => {
|
|
71929
72114
|
clearTimeout(timer);
|
|
71930
|
-
|
|
72115
|
+
resolve7(decision);
|
|
71931
72116
|
};
|
|
71932
72117
|
const timer = setTimeout(() => {
|
|
71933
72118
|
if (active.resolve !== settle)
|
|
71934
72119
|
return;
|
|
71935
72120
|
active.resolve = undefined;
|
|
71936
|
-
this.acceptDefault(active,
|
|
72121
|
+
this.acceptDefault(active, resolve7);
|
|
71937
72122
|
}, active.policy.timeoutMs);
|
|
71938
72123
|
timer.unref?.();
|
|
71939
72124
|
active.resolve = settle;
|
|
@@ -72031,7 +72216,7 @@ class WorkflowSteeringController {
|
|
|
72031
72216
|
deadlineAt: new Date(Date.now() + deadlineMs).toISOString()
|
|
72032
72217
|
});
|
|
72033
72218
|
}
|
|
72034
|
-
acceptDefault(active,
|
|
72219
|
+
acceptDefault(active, resolve7) {
|
|
72035
72220
|
const command = {
|
|
72036
72221
|
commandId: crypto.randomUUID(),
|
|
72037
72222
|
runId: active.runId,
|
|
@@ -72056,7 +72241,7 @@ class WorkflowSteeringController {
|
|
|
72056
72241
|
at: new Date().toISOString()
|
|
72057
72242
|
};
|
|
72058
72243
|
this.onAck?.(ack);
|
|
72059
|
-
|
|
72244
|
+
resolve7({ operation: "continue" });
|
|
72060
72245
|
}
|
|
72061
72246
|
accept(command, active, note) {
|
|
72062
72247
|
return this.publish({
|
|
@@ -73429,7 +73614,7 @@ var init_builtins2 = __esm(() => {
|
|
|
73429
73614
|
|
|
73430
73615
|
// ../../packages/app/src/services/workflow-service.ts
|
|
73431
73616
|
import { homedir as homedir5 } from "os";
|
|
73432
|
-
import { join as join19, resolve as
|
|
73617
|
+
import { join as join19, resolve as resolve7 } from "path";
|
|
73433
73618
|
function signalSubprocess(pid) {
|
|
73434
73619
|
if (!Number.isInteger(pid) || pid <= 1)
|
|
73435
73620
|
return false;
|
|
@@ -73499,7 +73684,7 @@ class WorkflowAppService {
|
|
|
73499
73684
|
};
|
|
73500
73685
|
}
|
|
73501
73686
|
async validate(file2, opts = {}) {
|
|
73502
|
-
const absolute =
|
|
73687
|
+
const absolute = resolve7(this.ctx.cwd, file2);
|
|
73503
73688
|
if (!await fileExists(absolute)) {
|
|
73504
73689
|
return { ok: false, valid: false, file: file2, errors: [`File not found: ${absolute}`] };
|
|
73505
73690
|
}
|
|
@@ -73558,7 +73743,7 @@ class WorkflowAppService {
|
|
|
73558
73743
|
...opts.vars ?? {},
|
|
73559
73744
|
__runId: runId
|
|
73560
73745
|
};
|
|
73561
|
-
const absolute =
|
|
73746
|
+
const absolute = resolve7(this.ctx.cwd, file2);
|
|
73562
73747
|
const embedded = this.embeddedSchemaOptions();
|
|
73563
73748
|
const workflow = await loadWorkflowDef(absolute, {
|
|
73564
73749
|
validateSchema: true,
|
|
@@ -73594,7 +73779,7 @@ class WorkflowAppService {
|
|
|
73594
73779
|
return;
|
|
73595
73780
|
let workflowName;
|
|
73596
73781
|
try {
|
|
73597
|
-
const def = await loadWorkflowDef(
|
|
73782
|
+
const def = await loadWorkflowDef(resolve7(this.ctx.cwd, file2), { validateSchema: false });
|
|
73598
73783
|
workflowName = def.name;
|
|
73599
73784
|
} catch {
|
|
73600
73785
|
return;
|
|
@@ -73719,7 +73904,7 @@ class WorkflowAppService {
|
|
|
73719
73904
|
if (entry === undefined)
|
|
73720
73905
|
return null;
|
|
73721
73906
|
for (const layer of listing.layers) {
|
|
73722
|
-
const abs =
|
|
73907
|
+
const abs = resolve7(layer.path, entry.path);
|
|
73723
73908
|
if (await fileExists(abs)) {
|
|
73724
73909
|
try {
|
|
73725
73910
|
return await loadWorkflowDef(abs, { validateSchema: false });
|
|
@@ -73735,7 +73920,7 @@ class WorkflowAppService {
|
|
|
73735
73920
|
const entries = [];
|
|
73736
73921
|
const scannedPaths = new Set;
|
|
73737
73922
|
for (const relPath of workflowPaths) {
|
|
73738
|
-
const absPath =
|
|
73923
|
+
const absPath = resolve7(projectRoot, relPath);
|
|
73739
73924
|
layers.push({ id: "project", path: absPath });
|
|
73740
73925
|
scannedPaths.add(absPath);
|
|
73741
73926
|
try {
|
|
@@ -73744,7 +73929,7 @@ class WorkflowAppService {
|
|
|
73744
73929
|
} catch {}
|
|
73745
73930
|
}
|
|
73746
73931
|
for (const relPath of workflowPaths) {
|
|
73747
|
-
const absPath =
|
|
73932
|
+
const absPath = resolve7(globalRoot, relPath);
|
|
73748
73933
|
if (scannedPaths.has(absPath))
|
|
73749
73934
|
continue;
|
|
73750
73935
|
layers.push({ id: "global", path: absPath });
|
|
@@ -74000,7 +74185,7 @@ async function scanWorkflowFiles(rootPath, source) {
|
|
|
74000
74185
|
async function walk3(dirPath) {
|
|
74001
74186
|
const names = await fs3.readDir(dirPath);
|
|
74002
74187
|
for (const name of names) {
|
|
74003
|
-
const fullPath =
|
|
74188
|
+
const fullPath = resolve7(dirPath, name);
|
|
74004
74189
|
const st = await fs3.stat(fullPath);
|
|
74005
74190
|
if (!st)
|
|
74006
74191
|
continue;
|
|
@@ -74533,19 +74718,19 @@ var {
|
|
|
74533
74718
|
init_src();
|
|
74534
74719
|
init_loader();
|
|
74535
74720
|
|
|
74536
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
74721
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/application-node.js
|
|
74537
74722
|
init_dist4();
|
|
74538
74723
|
init_dist5();
|
|
74539
74724
|
import { appendFileSync as appendFileSync4, mkdirSync as mkdirSync3, readFileSync as readFileSync5 } from "fs";
|
|
74540
74725
|
import { dirname as dirname5 } from "path";
|
|
74541
74726
|
|
|
74542
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
74727
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/application/index.js
|
|
74543
74728
|
init_default_observers();
|
|
74544
74729
|
init_event_bus();
|
|
74545
74730
|
init_file_observer();
|
|
74546
74731
|
init_logger3();
|
|
74547
74732
|
|
|
74548
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
74733
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/scheduler/noop.js
|
|
74549
74734
|
class NoopSchedulerAdapter {
|
|
74550
74735
|
constructor() {}
|
|
74551
74736
|
register(_cron, _action) {}
|
|
@@ -74553,7 +74738,7 @@ class NoopSchedulerAdapter {
|
|
|
74553
74738
|
async stop() {}
|
|
74554
74739
|
}
|
|
74555
74740
|
|
|
74556
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
74741
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/scheduler/factory.js
|
|
74557
74742
|
function initScheduler(adapter, cronEntries) {
|
|
74558
74743
|
const resolved = adapter ?? new NoopSchedulerAdapter;
|
|
74559
74744
|
if (cronEntries) {
|
|
@@ -74564,7 +74749,7 @@ function initScheduler(adapter, cronEntries) {
|
|
|
74564
74749
|
return resolved;
|
|
74565
74750
|
}
|
|
74566
74751
|
|
|
74567
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
74752
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/application/plugins/builtins.js
|
|
74568
74753
|
init_logger3();
|
|
74569
74754
|
init_metrics();
|
|
74570
74755
|
init_sdk();
|
|
@@ -74657,7 +74842,7 @@ function dbPlugin(db2) {
|
|
|
74657
74842
|
};
|
|
74658
74843
|
}
|
|
74659
74844
|
|
|
74660
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
74845
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/application/plugins/host.js
|
|
74661
74846
|
init_logger3();
|
|
74662
74847
|
|
|
74663
74848
|
class PluginHost {
|
|
@@ -74745,7 +74930,7 @@ class PluginHost {
|
|
|
74745
74930
|
}
|
|
74746
74931
|
}
|
|
74747
74932
|
|
|
74748
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
74933
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/application/index.js
|
|
74749
74934
|
async function performShutdown(state, reason) {
|
|
74750
74935
|
if (state.stopped)
|
|
74751
74936
|
return;
|
|
@@ -74856,10 +75041,10 @@ async function runApplication(options) {
|
|
|
74856
75041
|
}
|
|
74857
75042
|
}
|
|
74858
75043
|
|
|
74859
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
75044
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/application-node.js
|
|
74860
75045
|
init_scheduler_node();
|
|
74861
75046
|
|
|
74862
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
75047
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/telemetry/otel-node.js
|
|
74863
75048
|
var import_api14 = __toESM(require_src(), 1);
|
|
74864
75049
|
|
|
74865
75050
|
// ../../node_modules/.bun/@opentelemetry+exporter-metrics-otlp-http@0.218.0+e40b0dfdd726a224/node_modules/@opentelemetry/exporter-metrics-otlp-http/build/esm/OTLPMetricExporterBase.js
|
|
@@ -77875,7 +78060,7 @@ class OTLPTraceExporter extends import_otlp_exporter_base2.OTLPExporterBase {
|
|
|
77875
78060
|
}), JsonTraceSerializer));
|
|
77876
78061
|
}
|
|
77877
78062
|
}
|
|
77878
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
78063
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/telemetry/otel-node.js
|
|
77879
78064
|
var import_resources2 = __toESM(require_src4(), 1);
|
|
77880
78065
|
var import_sdk_trace_node = __toESM(require_src8(), 1);
|
|
77881
78066
|
var import_semantic_conventions = __toESM(require_src2(), 1);
|
|
@@ -77926,7 +78111,7 @@ async function shutdownNodeTelemetry() {
|
|
|
77926
78111
|
await Promise.all(pending);
|
|
77927
78112
|
}
|
|
77928
78113
|
|
|
77929
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
78114
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.27+2c3cbd358f360a0e/node_modules/@gobing-ai/ts-infra/dist/application-node.js
|
|
77930
78115
|
class ConfigValidationError extends Error {
|
|
77931
78116
|
constructor(message) {
|
|
77932
78117
|
super(message);
|
|
@@ -82006,15 +82191,15 @@ function parseLoopPoll(raw) {
|
|
|
82006
82191
|
return Number.isFinite(n2) && n2 > 0 ? n2 : DEFAULT_LOOP_POLL_MS;
|
|
82007
82192
|
}
|
|
82008
82193
|
function loopSleep(ms, signal) {
|
|
82009
|
-
return new Promise((
|
|
82194
|
+
return new Promise((resolve8) => {
|
|
82010
82195
|
if (signal?.aborted) {
|
|
82011
|
-
|
|
82196
|
+
resolve8();
|
|
82012
82197
|
return;
|
|
82013
82198
|
}
|
|
82014
|
-
const timer = setTimeout(
|
|
82199
|
+
const timer = setTimeout(resolve8, ms);
|
|
82015
82200
|
signal?.addEventListener("abort", () => {
|
|
82016
82201
|
clearTimeout(timer);
|
|
82017
|
-
|
|
82202
|
+
resolve8();
|
|
82018
82203
|
}, { once: true });
|
|
82019
82204
|
});
|
|
82020
82205
|
}
|
|
@@ -82074,7 +82259,7 @@ init_loader();
|
|
|
82074
82259
|
init_src2();
|
|
82075
82260
|
import { existsSync as existsSync10 } from "fs";
|
|
82076
82261
|
import { homedir as homedir6 } from "os";
|
|
82077
|
-
import { join as join21, resolve as
|
|
82262
|
+
import { join as join21, resolve as resolve8 } from "path";
|
|
82078
82263
|
|
|
82079
82264
|
// src/workflow/resolve-spur-bin.ts
|
|
82080
82265
|
import { basename as basename4 } from "path";
|
|
@@ -82095,7 +82280,7 @@ function resolveSpurBin() {
|
|
|
82095
82280
|
var GLOBAL_CONFIG_DIR = join21(".config", "spur");
|
|
82096
82281
|
function globalConfigRoot(context4) {
|
|
82097
82282
|
const override = context4.env.SPUR_GLOBAL_RULES_DIR;
|
|
82098
|
-
return override !== undefined && override.length > 0 ?
|
|
82283
|
+
return override !== undefined && override.length > 0 ? resolve8(context4.cwd, override) : join21(homedir6(), GLOBAL_CONFIG_DIR);
|
|
82099
82284
|
}
|
|
82100
82285
|
function resolveWorkflowPath(context4, profile) {
|
|
82101
82286
|
const bundledRoot = bundledConfigRoot();
|
|
@@ -82494,22 +82679,39 @@ async function assertFeatureCheckPass(context4, id, folderOverride, strict, asSt
|
|
|
82494
82679
|
init_src3();
|
|
82495
82680
|
init_src2();
|
|
82496
82681
|
init_dist6();
|
|
82682
|
+
import { createRequire } from "module";
|
|
82497
82683
|
|
|
82498
82684
|
// src/config.ts
|
|
82499
82685
|
var CLI_CONFIG = {
|
|
82500
82686
|
binaryName: "spur",
|
|
82501
82687
|
binaryLabel: "spur",
|
|
82502
|
-
binaryVersion: "0.3.
|
|
82688
|
+
binaryVersion: "0.3.44",
|
|
82503
82689
|
configDir: ".spur",
|
|
82504
82690
|
configFile: ".spur/config.yaml",
|
|
82505
82691
|
databaseFile: ".spur/spur.db"
|
|
82506
82692
|
};
|
|
82507
82693
|
|
|
82508
82694
|
// src/commands/history.ts
|
|
82695
|
+
async function resolveImportProvenance(fs3) {
|
|
82696
|
+
const binary = process.argv[1] ?? "unknown";
|
|
82697
|
+
let importer = "unknown";
|
|
82698
|
+
try {
|
|
82699
|
+
const require2 = createRequire(import.meta.url);
|
|
82700
|
+
const packagePath = require2.resolve("@gobing-ai/ts-llm-jsonl-importer/package.json");
|
|
82701
|
+
const raw = JSON.parse(await fs3.readFile(packagePath));
|
|
82702
|
+
const version3 = raw !== null && typeof raw === "object" && "version" in raw ? raw.version : undefined;
|
|
82703
|
+
if (typeof version3 === "string" && version3.length > 0)
|
|
82704
|
+
importer = version3;
|
|
82705
|
+
} catch {}
|
|
82706
|
+
return { binary, importer };
|
|
82707
|
+
}
|
|
82708
|
+
function formatProvenance(provenance) {
|
|
82709
|
+
return `binary: ${provenance.binary}
|
|
82710
|
+
importer: @gobing-ai/ts-llm-jsonl-importer@${provenance.importer}`;
|
|
82711
|
+
}
|
|
82509
82712
|
function registerHistoryCommand(program2, context4) {
|
|
82510
82713
|
const noun = program2.command("history").summary("import and analyze coding-agent history");
|
|
82511
82714
|
noun.command("import").description("Import agent conversation JSONL. `--source all` fans out across all sources with " + "per-source failure isolation (task 0470). A single source is the n=1 case of " + "the same contract \u2014 never two import paths.").option("--source <source>", "pi|claude|codex|gemini|opencode|antigravity|openclaw|omp|grok|agy|all", "all").option("--file <path>", "Import one JSONL file (single-source only)").option("--root <path>", "Scan a history root").option("--mode <mode>", "full|incremental|force-file").option("--dry-run", "Scan without persisting imported records").option("--source-timeout <ms>", "Per-source timeout in milliseconds (default 600000 = 10 min)", "600000").option("--json", "Output machine-readable JSON where supported").action(async (options) => {
|
|
82512
|
-
const svc = new HistoryService({ getDb: () => context4.getDb() });
|
|
82513
82715
|
const source = options.source ?? "all";
|
|
82514
82716
|
if (options.file && source === "all") {
|
|
82515
82717
|
context4.output.write(options.json ? toJson2({ status: "error", message: '--file requires a single --source, not "all".' }) : 'spur history import: --file requires a single --source, not "all".');
|
|
@@ -82528,6 +82730,13 @@ function registerHistoryCommand(program2, context4) {
|
|
|
82528
82730
|
context4.setExitCode(1);
|
|
82529
82731
|
return;
|
|
82530
82732
|
}
|
|
82733
|
+
if (options.file && mode === "full" && options.dryRun !== true) {
|
|
82734
|
+
const unsafeMsg = "spur history import: --file <path> --mode full without --dry-run is unsafe \u2014 full mode " + "treats the file as the authoritative source for reconciliation. Preview with --dry-run, " + "or import a single file with --mode force-file.";
|
|
82735
|
+
context4.output.write(options.json ? toJson2({ status: "error", message: unsafeMsg }) : unsafeMsg);
|
|
82736
|
+
context4.setExitCode(1);
|
|
82737
|
+
return;
|
|
82738
|
+
}
|
|
82739
|
+
const svc = new HistoryService({ getDb: () => context4.getDb() });
|
|
82531
82740
|
const fanOut = await svc.importAll({
|
|
82532
82741
|
sources: source === "all" ? undefined : [source],
|
|
82533
82742
|
file: options.file || undefined,
|
|
@@ -82536,7 +82745,9 @@ function registerHistoryCommand(program2, context4) {
|
|
|
82536
82745
|
dryRun: options.dryRun === true,
|
|
82537
82746
|
sourceTimeout
|
|
82538
82747
|
});
|
|
82539
|
-
|
|
82748
|
+
const provenance = await resolveImportProvenance(context4.fs);
|
|
82749
|
+
context4.output.write(options.json ? toJson2({ ...fanOut, provenance }) : `${formatProvenance(provenance)}
|
|
82750
|
+
${formatFanOutResult(fanOut)}`);
|
|
82540
82751
|
context4.setExitCode(fanOut.exitCode);
|
|
82541
82752
|
});
|
|
82542
82753
|
noun.command("analyze").description("Aggregate imported history with SQL and write a versioned JSON artifact (Q1-Q10 forensic query set).").option("--since <iso>", "Inclusive lower bound on message timestamp").option("--until <iso>", "Inclusive upper bound on message timestamp").option("--source <source>", "pi|claude|codex|gemini|opencode|antigravity|openclaw|omp|grok|agy|all", "all").option("--session <id>", "Narrow to a single session id").option("--run <runId>", "Narrow to a single workflow run id").option("--task <wbs>", "Narrow to a single task WBS").option("--top <n>", "Leaderboard depth for byTool/bySession", "20").option("--out <path>", "Write the artifact to this path instead of the dated reports dir").option("--json", "Emit the artifact as JSON instead of the human summary").action(async (options) => {
|
|
@@ -82656,6 +82867,8 @@ function registerHistoryCommand(program2, context4) {
|
|
|
82656
82867
|
});
|
|
82657
82868
|
} else {
|
|
82658
82869
|
const failing = entries.filter((e) => e.status === "failed");
|
|
82870
|
+
const degraded = entries.filter((e) => e.status === "degraded");
|
|
82871
|
+
const problems = [...failing, ...degraded];
|
|
82659
82872
|
await bus.emit("history.daily.failed", {
|
|
82660
82873
|
source: "history",
|
|
82661
82874
|
renderer: "history-daily",
|
|
@@ -82663,7 +82876,7 @@ function registerHistoryCommand(program2, context4) {
|
|
|
82663
82876
|
sources,
|
|
82664
82877
|
okSources,
|
|
82665
82878
|
failedSources,
|
|
82666
|
-
detail:
|
|
82879
|
+
detail: problems.length > 0 ? problems.map((e) => `${e.source}: ${e.status} (${e.parseErrors + e.validationErrors} ` + "parse/validation errors)").join("; ") : "daily fan-out reported non-zero exit with no failing or degraded source",
|
|
82667
82880
|
durationMs,
|
|
82668
82881
|
artifactPath
|
|
82669
82882
|
});
|
|
@@ -82724,7 +82937,7 @@ init_loader();
|
|
|
82724
82937
|
init_src2();
|
|
82725
82938
|
init_dist10();
|
|
82726
82939
|
import { homedir as homedir7 } from "os";
|
|
82727
|
-
import { join as join22, resolve as
|
|
82940
|
+
import { join as join22, resolve as resolve9 } from "path";
|
|
82728
82941
|
|
|
82729
82942
|
// src/config/scaffold-manifest.ts
|
|
82730
82943
|
var SCAFFOLD_MANIFEST = [
|
|
@@ -82803,7 +83016,7 @@ If \`.spur/context/\` is absent, proceed normally. Never block work on its absen
|
|
|
82803
83016
|
`;
|
|
82804
83017
|
function globalRulesRoot(context4) {
|
|
82805
83018
|
const override = context4.env.SPUR_GLOBAL_RULES_DIR;
|
|
82806
|
-
return override !== undefined && override.length > 0 ?
|
|
83019
|
+
return override !== undefined && override.length > 0 ? resolve9(context4.cwd, override) : join22(homedir7(), GLOBAL_RULES_DIR2);
|
|
82807
83020
|
}
|
|
82808
83021
|
async function writeIfNew(context4, path9, content, force, result) {
|
|
82809
83022
|
if (!force && await context4.fs.exists(path9)) {
|
|
@@ -82834,7 +83047,7 @@ async function seedGlobalConfig(context4) {
|
|
|
82834
83047
|
if (source === null)
|
|
82835
83048
|
return 0;
|
|
82836
83049
|
const globalOverride = context4.env.SPUR_GLOBAL_RULES_DIR;
|
|
82837
|
-
const target = globalOverride !== undefined && globalOverride.length > 0 ?
|
|
83050
|
+
const target = globalOverride !== undefined && globalOverride.length > 0 ? resolve9(context4.cwd, globalOverride) : join22(homedir7(), GLOBAL_CONFIG_DIR2);
|
|
82838
83051
|
let written = 0;
|
|
82839
83052
|
for (const relPath of listBundledConfigFiles()) {
|
|
82840
83053
|
if (relPath === GLOBAL_CONFIG_EXAMPLE)
|
|
@@ -83107,15 +83320,15 @@ async function runMessageWatch(svc, output2, options, runtime = {}) {
|
|
|
83107
83320
|
}
|
|
83108
83321
|
}
|
|
83109
83322
|
function defaultSleep(ms, signal) {
|
|
83110
|
-
return new Promise((
|
|
83323
|
+
return new Promise((resolve10) => {
|
|
83111
83324
|
if (signal?.aborted) {
|
|
83112
|
-
|
|
83325
|
+
resolve10();
|
|
83113
83326
|
return;
|
|
83114
83327
|
}
|
|
83115
|
-
const timer = setTimeout(
|
|
83328
|
+
const timer = setTimeout(resolve10, ms);
|
|
83116
83329
|
signal?.addEventListener("abort", () => {
|
|
83117
83330
|
clearTimeout(timer);
|
|
83118
|
-
|
|
83331
|
+
resolve10();
|
|
83119
83332
|
}, { once: true });
|
|
83120
83333
|
});
|
|
83121
83334
|
}
|
|
@@ -83143,12 +83356,12 @@ function registerMigrateCommand(program2, context4) {
|
|
|
83143
83356
|
// src/commands/projects.ts
|
|
83144
83357
|
init_src3();
|
|
83145
83358
|
init_dist5();
|
|
83146
|
-
import { basename as basename5, resolve as
|
|
83359
|
+
import { basename as basename5, resolve as resolve10 } from "path";
|
|
83147
83360
|
function registerProjectsCommand(program2, context4) {
|
|
83148
83361
|
const projectsCmd = program2.command("projects").summary("manage the Spur multi-project registry");
|
|
83149
83362
|
projectsCmd.command("add").argument("<path>", "Project root directory path").option("--name <name>", "Display name for the project").option("--json", "Output JSON response").action(async (pathArg, options) => {
|
|
83150
83363
|
try {
|
|
83151
|
-
const absolutePath =
|
|
83364
|
+
const absolutePath = resolve10(context4.cwd, pathArg);
|
|
83152
83365
|
if (!await context4.fs.exists(absolutePath)) {
|
|
83153
83366
|
throw new Error(`Directory does not exist: ${absolutePath}`);
|
|
83154
83367
|
}
|
|
@@ -83834,8 +84047,8 @@ class EventPublisher {
|
|
|
83834
84047
|
if (bufferedEvents.length > 0) {
|
|
83835
84048
|
return { done: false, value: bufferedEvents.shift() };
|
|
83836
84049
|
}
|
|
83837
|
-
return new Promise((
|
|
83838
|
-
pullResolvers.push([
|
|
84050
|
+
return new Promise((resolve11, reject) => {
|
|
84051
|
+
pullResolvers.push([resolve11, reject]);
|
|
83839
84052
|
});
|
|
83840
84053
|
}, async () => {
|
|
83841
84054
|
unsubscribe();
|
|
@@ -90360,6 +90573,8 @@ var teamModule = {
|
|
|
90360
90573
|
const enriched = teams.map((team) => ({
|
|
90361
90574
|
teamId: team.teamId,
|
|
90362
90575
|
name: team.name,
|
|
90576
|
+
workDir: team.workDir,
|
|
90577
|
+
isCurrentProject: team.isCurrentProject,
|
|
90363
90578
|
members: team.specs.map((spec) => {
|
|
90364
90579
|
const proc = processes.find((p2) => p2.agentId === spec.id);
|
|
90365
90580
|
const configModel = spec.config?.model;
|
|
@@ -93846,7 +94061,7 @@ function registerTaskCommand(program2, context4) {
|
|
|
93846
94061
|
dedupeWithinSec: options.allowDuplicateName ? null : options.dedupeWithin
|
|
93847
94062
|
});
|
|
93848
94063
|
if (options.json) {
|
|
93849
|
-
context4.output.write(toJson2(result));
|
|
94064
|
+
context4.output.write(toJson2({ ...result, wbs: result.ref.id, filePath: result.ref.filePath }));
|
|
93850
94065
|
} else {
|
|
93851
94066
|
context4.output.write(`Created task ${result.ref.id}: ${result.ref.filePath}`);
|
|
93852
94067
|
}
|
|
@@ -94026,8 +94241,13 @@ ${result.content}`);
|
|
|
94026
94241
|
context4.setExitCode(2);
|
|
94027
94242
|
}
|
|
94028
94243
|
} catch (err) {
|
|
94029
|
-
|
|
94030
|
-
|
|
94244
|
+
if (err instanceof SectionMutationError) {
|
|
94245
|
+
context4.output.error(`[${err.code}] ${err.message}`);
|
|
94246
|
+
context4.setExitCode(err.code === "usage" ? 2 : 3);
|
|
94247
|
+
} else {
|
|
94248
|
+
context4.output.error(String(err));
|
|
94249
|
+
context4.setExitCode(1);
|
|
94250
|
+
}
|
|
94031
94251
|
}
|
|
94032
94252
|
});
|
|
94033
94253
|
task.command("deps").summary("Mutate the dependencies[] frontmatter array on a task.").description("Mutate the `dependencies[]` array on an existing task. Operations:\n" + ` set <wbs...> \u2014 replace the array with the given WBS values
|
|
@@ -94390,32 +94610,51 @@ ${result.content}`);
|
|
|
94390
94610
|
const svc = await makeCheckService(context4);
|
|
94391
94611
|
const planningFolders = await resolvePlanningFolders(context4.fs);
|
|
94392
94612
|
const activeFolder = planningFolders.foldersConfig.active_folder;
|
|
94393
|
-
const tasksDir = options.folder ??
|
|
94394
|
-
const
|
|
94395
|
-
|
|
94613
|
+
const tasksDir = context4.fs.resolve(options.folder ?? activeFolder);
|
|
94614
|
+
const printResult = (result) => {
|
|
94615
|
+
if (json3)
|
|
94616
|
+
return;
|
|
94617
|
+
context4.output.write(`
|
|
94618
|
+
${result.wbs} (${result.status}): ${result.pass ? "PASS" : "FAIL"}`);
|
|
94619
|
+
for (const f of result.findings) {
|
|
94620
|
+
const tag = f.severity === "error" ? "ERR" : "WARN";
|
|
94621
|
+
context4.output.write(` [${tag}] ${f.layer} ${f.section}: ${f.message}`);
|
|
94622
|
+
}
|
|
94623
|
+
if (result.missingSections.length > 0) {
|
|
94624
|
+
context4.output.write(` Missing: ${result.missingSections.join(", ")}`);
|
|
94625
|
+
}
|
|
94626
|
+
};
|
|
94396
94627
|
const results = [];
|
|
94397
|
-
|
|
94398
|
-
const
|
|
94399
|
-
|
|
94400
|
-
|
|
94628
|
+
if (wbs) {
|
|
94629
|
+
const locator = options.folder !== undefined ? TaskLocator.forSingleDir(context4.fs, tasksDir) : await makeTaskLocator(context4);
|
|
94630
|
+
const hit = await locator.findByWbs(wbs);
|
|
94631
|
+
if (hit === null) {
|
|
94632
|
+
context4.output.error(`Task ${wbs} not found`);
|
|
94401
94633
|
context4.setExitCode(1);
|
|
94402
|
-
|
|
94634
|
+
} else {
|
|
94635
|
+
const result = await svc.check(hit.filePath, wbs, {
|
|
94636
|
+
strict,
|
|
94637
|
+
severityOverrides: planningFolders.severityOverrides
|
|
94638
|
+
});
|
|
94639
|
+
results.push(result);
|
|
94640
|
+
printResult(result);
|
|
94403
94641
|
}
|
|
94404
|
-
|
|
94405
|
-
|
|
94406
|
-
|
|
94407
|
-
|
|
94408
|
-
|
|
94409
|
-
|
|
94410
|
-
|
|
94411
|
-
|
|
94412
|
-
|
|
94413
|
-
const tag = f.severity === "error" ? "ERR" : "WARN";
|
|
94414
|
-
context4.output.write(` [${tag}] ${f.layer} ${f.section}: ${f.message}`);
|
|
94415
|
-
}
|
|
94416
|
-
if (result.missingSections.length > 0) {
|
|
94417
|
-
context4.output.write(` Missing: ${result.missingSections.join(", ")}`);
|
|
94642
|
+
} else {
|
|
94643
|
+
const entries = await context4.fs.readDir(tasksDir);
|
|
94644
|
+
const wbsPattern = entries.filter((n2) => /^\d{4}_.+\.md$/.test(n2)).map((n2) => n2.match(/^(\d{4})_/)?.[1]).filter((n2) => n2 !== undefined);
|
|
94645
|
+
for (const w of wbsPattern) {
|
|
94646
|
+
const fileName = entries.find((n2) => n2.startsWith(`${w}_`) && n2.endsWith(".md"));
|
|
94647
|
+
if (!fileName) {
|
|
94648
|
+
context4.output.error(`Task ${w} not found`);
|
|
94649
|
+
context4.setExitCode(1);
|
|
94650
|
+
continue;
|
|
94418
94651
|
}
|
|
94652
|
+
const result = await svc.check(`${tasksDir}/${fileName}`, w, {
|
|
94653
|
+
strict,
|
|
94654
|
+
severityOverrides: planningFolders.severityOverrides
|
|
94655
|
+
});
|
|
94656
|
+
results.push(result);
|
|
94657
|
+
printResult(result);
|
|
94419
94658
|
}
|
|
94420
94659
|
}
|
|
94421
94660
|
if (!wbs) {
|
|
@@ -94538,7 +94777,7 @@ ${result.wbs} (${result.status}): ${result.pass ? "PASS" : "FAIL"}`);
|
|
|
94538
94777
|
}
|
|
94539
94778
|
async function makeService2(context4, folderOverride, noLifecycle = false) {
|
|
94540
94779
|
const foldersConfig = (await resolvePlanningFolders(context4.fs)).foldersConfig;
|
|
94541
|
-
const tasksDir =
|
|
94780
|
+
const tasksDir = context4.fs.resolve(folderOverride ?? foldersConfig.active_folder);
|
|
94542
94781
|
const lifecycle = noLifecycle ? undefined : makeLifecycleAdapter(context4, TASK_LIFECYCLE_PROFILE);
|
|
94543
94782
|
const writeService = new PlanningWriteService({
|
|
94544
94783
|
fs: context4.fs,
|
|
@@ -94931,7 +95170,7 @@ init_dist7();
|
|
|
94931
95170
|
init_dist6();
|
|
94932
95171
|
init_dist5();
|
|
94933
95172
|
import { closeSync as closeSync5, fstatSync as fstatSync3, openSync as openSync5, readSync as readSync3 } from "fs";
|
|
94934
|
-
import { join as join30, resolve as
|
|
95173
|
+
import { join as join30, resolve as resolve11 } from "path";
|
|
94935
95174
|
import { createInterface } from "readline";
|
|
94936
95175
|
import { setTimeout as sleep3 } from "timers/promises";
|
|
94937
95176
|
function shQuote2(value2) {
|
|
@@ -95130,7 +95369,7 @@ Monitor with: spur workflow trace ${runId2} --follow`);
|
|
|
95130
95369
|
let planPreview;
|
|
95131
95370
|
if (options.plan !== false) {
|
|
95132
95371
|
try {
|
|
95133
|
-
const def = await loadWorkflowDef(
|
|
95372
|
+
const def = await loadWorkflowDef(resolve11(context4.cwd, file2), { validateSchema: false });
|
|
95134
95373
|
planPreview = renderRunPlan(def);
|
|
95135
95374
|
} catch {}
|
|
95136
95375
|
}
|
|
@@ -95594,7 +95833,7 @@ init_src3();
|
|
|
95594
95833
|
init_src();
|
|
95595
95834
|
init_src2();
|
|
95596
95835
|
init_dist5();
|
|
95597
|
-
import { dirname as dirname19, join as join31, resolve as
|
|
95836
|
+
import { dirname as dirname19, join as join31, resolve as resolve12 } from "path";
|
|
95598
95837
|
import { isatty as isatty4 } from "tty";
|
|
95599
95838
|
|
|
95600
95839
|
// ../../node_modules/.bun/@clack+core@1.4.1/node_modules/@clack/core/dist/index.mjs
|
|
@@ -96977,7 +97216,7 @@ class DefaultHitlResponder {
|
|
|
96977
97216
|
|
|
96978
97217
|
// src/context.ts
|
|
96979
97218
|
function createCliContext(options) {
|
|
96980
|
-
const cwd =
|
|
97219
|
+
const cwd = resolve12(options.cwd ?? process.cwd());
|
|
96981
97220
|
const env = options.env ?? process.env;
|
|
96982
97221
|
const fs3 = createNodeFileSystem3(cwd);
|
|
96983
97222
|
let dbPromise;
|