@gobing-ai/spur 0.3.32 → 0.3.34
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/config/config.example.yaml +1 -1
- package/config/workflows/feature-lifecycle.yaml +10 -0
- package/config/workflows/task-pipeline.yaml +15 -3
- package/package.json +10 -10
- package/schemas/spur-config.schema.json +37 -23
- package/spur.js +524 -271
- package/web/index.html +1 -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.19/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.19/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.19/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.19/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.19/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.19/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.19+1d5c5fe73da9d0ae/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.19+1d5c5fe73da9d0ae/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.19+1d5c5fe73da9d0ae/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 {
|
|
@@ -29101,7 +29101,7 @@ var init_execa = __esm(() => {
|
|
|
29101
29101
|
} = getIpcExport());
|
|
29102
29102
|
});
|
|
29103
29103
|
|
|
29104
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29104
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+1d5c5fe73da9d0ae/node_modules/@gobing-ai/ts-runtime/dist/process-executor.js
|
|
29105
29105
|
import { isatty } from "tty";
|
|
29106
29106
|
|
|
29107
29107
|
class NodeProcessExecutor {
|
|
@@ -29371,12 +29371,13 @@ class BunPipeProcess {
|
|
|
29371
29371
|
}
|
|
29372
29372
|
}
|
|
29373
29373
|
function buildExecaOptions(opts) {
|
|
29374
|
-
const
|
|
29374
|
+
const mode = opts.forceBuffered ? "buffered" : opts.outputPolicy?.mode ?? "buffered";
|
|
29375
|
+
const streamToTerminal = mode === "stream" && (opts.outputPolicy?.mode === "stream" ? opts.outputPolicy.isTTY ?? process.stdout.isTTY ?? isatty(1) : false);
|
|
29375
29376
|
return {
|
|
29376
29377
|
reject: opts.rejectOnError,
|
|
29377
29378
|
stdin: "ignore",
|
|
29378
29379
|
stripFinalNewline: true,
|
|
29379
|
-
...
|
|
29380
|
+
...mode === "pipe" ? { stdout: "pipe", stderr: "pipe" } : streamToTerminal ? { stdout: ["inherit", "pipe"], stderr: ["inherit", "pipe"] } : { all: true },
|
|
29380
29381
|
...opts.cwd !== undefined ? { cwd: opts.cwd } : {},
|
|
29381
29382
|
...opts.env !== undefined ? { env: opts.env } : {},
|
|
29382
29383
|
...opts.timeout !== undefined ? { timeout: opts.timeout } : {},
|
|
@@ -29439,7 +29440,7 @@ var init_process_executor = __esm(() => {
|
|
|
29439
29440
|
init_execa();
|
|
29440
29441
|
});
|
|
29441
29442
|
|
|
29442
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29443
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+1d5c5fe73da9d0ae/node_modules/@gobing-ai/ts-runtime/dist/runtime-node-bun.js
|
|
29443
29444
|
function getNodeFileSystem() {
|
|
29444
29445
|
if (!_nodeFileSystem)
|
|
29445
29446
|
_nodeFileSystem = createNodeFileSystem();
|
|
@@ -29499,7 +29500,7 @@ var init_runtime_node_bun = __esm(() => {
|
|
|
29499
29500
|
};
|
|
29500
29501
|
});
|
|
29501
29502
|
|
|
29502
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29503
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+1d5c5fe73da9d0ae/node_modules/@gobing-ai/ts-runtime/dist/context.js
|
|
29503
29504
|
class RuntimeContext {
|
|
29504
29505
|
scope;
|
|
29505
29506
|
runtimeName;
|
|
@@ -29569,7 +29570,7 @@ var init_context = __esm(() => {
|
|
|
29569
29570
|
init_runtime_node_bun();
|
|
29570
29571
|
});
|
|
29571
29572
|
|
|
29572
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29573
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+1d5c5fe73da9d0ae/node_modules/@gobing-ai/ts-runtime/dist/path.js
|
|
29573
29574
|
function normalizeSeparators(path6) {
|
|
29574
29575
|
return path6.replaceAll("\\", "/");
|
|
29575
29576
|
}
|
|
@@ -29630,17 +29631,17 @@ var init_path = __esm(() => {
|
|
|
29630
29631
|
SEP = globalThis.process?.platform === "win32" ? "\\" : "/";
|
|
29631
29632
|
});
|
|
29632
29633
|
|
|
29633
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29634
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+1d5c5fe73da9d0ae/node_modules/@gobing-ai/ts-runtime/dist/schema-validation.js
|
|
29634
29635
|
var REMOTE_SCHEMA_MAX_BYTES;
|
|
29635
29636
|
var init_schema_validation = __esm(() => {
|
|
29636
29637
|
init_dist2();
|
|
29637
29638
|
REMOTE_SCHEMA_MAX_BYTES = 5 * 1024 * 1024;
|
|
29638
29639
|
});
|
|
29639
29640
|
|
|
29640
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29641
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+1d5c5fe73da9d0ae/node_modules/@gobing-ai/ts-runtime/dist/types.js
|
|
29641
29642
|
var init_types = () => {};
|
|
29642
29643
|
|
|
29643
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29644
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+1d5c5fe73da9d0ae/node_modules/@gobing-ai/ts-runtime/dist/index.js
|
|
29644
29645
|
var init_dist3 = __esm(() => {
|
|
29645
29646
|
init_config();
|
|
29646
29647
|
init_context();
|
|
@@ -29649,7 +29650,7 @@ var init_dist3 = __esm(() => {
|
|
|
29649
29650
|
init_types();
|
|
29650
29651
|
});
|
|
29651
29652
|
|
|
29652
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
29653
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+1d5c5fe73da9d0ae/node_modules/@gobing-ai/ts-runtime/dist/bun-sqlite.js
|
|
29653
29654
|
import { Database } from "bun:sqlite";
|
|
29654
29655
|
var init_bun_sqlite = () => {};
|
|
29655
29656
|
|
|
@@ -33841,7 +33842,7 @@ var init_bun_sqlite2 = __esm(() => {
|
|
|
33841
33842
|
init_session2();
|
|
33842
33843
|
});
|
|
33843
33844
|
|
|
33844
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
33845
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/schema/inbox-messages.js
|
|
33845
33846
|
var inboxMessages;
|
|
33846
33847
|
var init_inbox_messages = __esm(() => {
|
|
33847
33848
|
init_sqlite_core();
|
|
@@ -33860,7 +33861,7 @@ var init_inbox_messages = __esm(() => {
|
|
|
33860
33861
|
}, (table2) => [index("idx_inbox_messages_to_status").on(table2.toId, table2.status)]);
|
|
33861
33862
|
});
|
|
33862
33863
|
|
|
33863
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
33864
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/schema/common.js
|
|
33864
33865
|
function nowTimestamp() {
|
|
33865
33866
|
return Date.now();
|
|
33866
33867
|
}
|
|
@@ -33889,7 +33890,7 @@ var init_common3 = __esm(() => {
|
|
|
33889
33890
|
appendOnlyColumns = buildAppendOnlyColumns();
|
|
33890
33891
|
});
|
|
33891
33892
|
|
|
33892
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
33893
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/schema/queue-jobs.js
|
|
33893
33894
|
var queueJobs;
|
|
33894
33895
|
var init_queue_jobs = __esm(() => {
|
|
33895
33896
|
init_sqlite_core();
|
|
@@ -33909,7 +33910,7 @@ var init_queue_jobs = __esm(() => {
|
|
|
33909
33910
|
}, (table2) => [index("queue_jobs_ready_idx").on(table2.status, table2.nextRetryAt, table2.createdAt)]);
|
|
33910
33911
|
});
|
|
33911
33912
|
|
|
33912
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
33913
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/schema/runtime.js
|
|
33913
33914
|
var exports_runtime = {};
|
|
33914
33915
|
__export(exports_runtime, {
|
|
33915
33916
|
queueJobs: () => queueJobs,
|
|
@@ -33920,7 +33921,7 @@ var init_runtime = __esm(() => {
|
|
|
33920
33921
|
init_queue_jobs();
|
|
33921
33922
|
});
|
|
33922
33923
|
|
|
33923
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
33924
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/adapters/bun-sqlite.js
|
|
33924
33925
|
var exports_bun_sqlite = {};
|
|
33925
33926
|
__export(exports_bun_sqlite, {
|
|
33926
33927
|
BunSqliteAdapter: () => BunSqliteAdapter
|
|
@@ -34211,7 +34212,7 @@ var init_d1 = __esm(() => {
|
|
|
34211
34212
|
init_session3();
|
|
34212
34213
|
});
|
|
34213
34214
|
|
|
34214
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34215
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/adapters/d1.js
|
|
34215
34216
|
var exports_d1 = {};
|
|
34216
34217
|
__export(exports_d1, {
|
|
34217
34218
|
D1Adapter: () => D1Adapter
|
|
@@ -34275,7 +34276,7 @@ var init_d12 = __esm(() => {
|
|
|
34275
34276
|
init_runtime();
|
|
34276
34277
|
});
|
|
34277
34278
|
|
|
34278
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34279
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/adapter.js
|
|
34279
34280
|
async function createDbAdapter(config3) {
|
|
34280
34281
|
switch (config3.driver) {
|
|
34281
34282
|
case "bun-sqlite": {
|
|
@@ -34315,7 +34316,7 @@ var init_drizzle_orm = __esm(() => {
|
|
|
34315
34316
|
init_view_common();
|
|
34316
34317
|
});
|
|
34317
34318
|
|
|
34318
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34319
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/query-spec.js
|
|
34319
34320
|
function compilePredicate(predicate) {
|
|
34320
34321
|
if ("and" in predicate) {
|
|
34321
34322
|
const parts = predicate.and.map(compilePredicate).filter((p) => p !== undefined);
|
|
@@ -34353,7 +34354,7 @@ var init_query_spec = __esm(() => {
|
|
|
34353
34354
|
};
|
|
34354
34355
|
});
|
|
34355
34356
|
|
|
34356
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34357
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/base-dao.js
|
|
34357
34358
|
function asSelectQuery(query) {
|
|
34358
34359
|
return query;
|
|
34359
34360
|
}
|
|
@@ -34395,7 +34396,7 @@ var init_base_dao = __esm(() => {
|
|
|
34395
34396
|
init_query_spec();
|
|
34396
34397
|
});
|
|
34397
34398
|
|
|
34398
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34399
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/embedded-migrations.js
|
|
34399
34400
|
var embeddedMigrations;
|
|
34400
34401
|
var init_embedded_migrations = __esm(() => {
|
|
34401
34402
|
embeddedMigrations = [
|
|
@@ -34427,7 +34428,7 @@ var init_embedded_migrations = __esm(() => {
|
|
|
34427
34428
|
];
|
|
34428
34429
|
});
|
|
34429
34430
|
|
|
34430
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34431
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/entity-dao.js
|
|
34431
34432
|
var EntityDao;
|
|
34432
34433
|
var init_entity_dao = __esm(() => {
|
|
34433
34434
|
init_drizzle_orm();
|
|
@@ -34589,7 +34590,7 @@ var init_entity_dao = __esm(() => {
|
|
|
34589
34590
|
};
|
|
34590
34591
|
});
|
|
34591
34592
|
|
|
34592
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34593
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/inbox-message-dao.js
|
|
34593
34594
|
function isPromiseLike(value) {
|
|
34594
34595
|
return value !== null && (typeof value === "object" || typeof value === "function") && typeof value.then === "function";
|
|
34595
34596
|
}
|
|
@@ -34762,7 +34763,7 @@ var init_migrator2 = __esm(() => {
|
|
|
34762
34763
|
init_migrator();
|
|
34763
34764
|
});
|
|
34764
34765
|
|
|
34765
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34766
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/migrate.js
|
|
34766
34767
|
async function ensureJournalTable(adapter, table3) {
|
|
34767
34768
|
await adapter.exec(`CREATE TABLE IF NOT EXISTS "${table3}" (` + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "hash text NOT NULL, " + "created_at numeric" + ")");
|
|
34768
34769
|
}
|
|
@@ -34837,7 +34838,7 @@ var init_migrate = __esm(() => {
|
|
|
34837
34838
|
init_embedded_migrations();
|
|
34838
34839
|
});
|
|
34839
34840
|
|
|
34840
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34841
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/queue-job-dao.js
|
|
34841
34842
|
var QueueJobDao;
|
|
34842
34843
|
var init_queue_job_dao = __esm(() => {
|
|
34843
34844
|
init_drizzle_orm();
|
|
@@ -34978,7 +34979,7 @@ var init_queue_job_dao = __esm(() => {
|
|
|
34978
34979
|
};
|
|
34979
34980
|
});
|
|
34980
34981
|
|
|
34981
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
34982
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/index.js
|
|
34982
34983
|
var exports_dist = {};
|
|
34983
34984
|
__export(exports_dist, {
|
|
34984
34985
|
embeddedMigrations: () => embeddedMigrations,
|
|
@@ -37360,9 +37361,9 @@ var init_src = __esm(() => {
|
|
|
37360
37361
|
AgentConfigSchema = exports_external.object({
|
|
37361
37362
|
default: exports_external.string().optional(),
|
|
37362
37363
|
executors: exports_external.array(AgentExecutorConfigSchema).optional(),
|
|
37363
|
-
"default-by-phase": exports_external.record(exports_external.string(), exports_external.string()).optional(),
|
|
37364
37364
|
team: exports_external.record(exports_external.string(), TeamConfigSchema).optional(),
|
|
37365
|
-
output: AgentOutputConfigSchema.optional()
|
|
37365
|
+
output: AgentOutputConfigSchema.optional(),
|
|
37366
|
+
sessionAffinity: exports_external.boolean().optional()
|
|
37366
37367
|
}).superRefine((value, ctx) => {
|
|
37367
37368
|
const executors = value.executors;
|
|
37368
37369
|
if (executors !== undefined) {
|
|
@@ -37464,7 +37465,7 @@ var init_src = __esm(() => {
|
|
|
37464
37465
|
});
|
|
37465
37466
|
});
|
|
37466
37467
|
|
|
37467
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37468
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/config.js
|
|
37468
37469
|
function parseYamlObject(text3) {
|
|
37469
37470
|
let parsed;
|
|
37470
37471
|
try {
|
|
@@ -37591,7 +37592,7 @@ var init_config2 = __esm(() => {
|
|
|
37591
37592
|
};
|
|
37592
37593
|
});
|
|
37593
37594
|
|
|
37594
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37595
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/file-system-node.js
|
|
37595
37596
|
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";
|
|
37596
37597
|
import { dirname as dirname2, resolve as resolvePath3 } from "path";
|
|
37597
37598
|
function createNodeFileSystem3(root, paths) {
|
|
@@ -37678,7 +37679,7 @@ function findProjectRoot3(startDir) {
|
|
|
37678
37679
|
}
|
|
37679
37680
|
var init_file_system_node2 = () => {};
|
|
37680
37681
|
|
|
37681
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37682
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/db-errors.js
|
|
37682
37683
|
var D1NotConfiguredError2, DbModuleNotInstalledError3;
|
|
37683
37684
|
var init_db_errors2 = __esm(() => {
|
|
37684
37685
|
D1NotConfiguredError2 = class D1NotConfiguredError2 extends Error {
|
|
@@ -37695,7 +37696,7 @@ var init_db_errors2 = __esm(() => {
|
|
|
37695
37696
|
};
|
|
37696
37697
|
});
|
|
37697
37698
|
|
|
37698
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37699
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/file-system-cf.js
|
|
37699
37700
|
function createCfFileSystem2() {
|
|
37700
37701
|
return {
|
|
37701
37702
|
getProjectRoot: () => "/bundle",
|
|
@@ -37734,7 +37735,7 @@ function createCfFileSystem2() {
|
|
|
37734
37735
|
}
|
|
37735
37736
|
var UNSUPPORTED = "FileSystem is not available on Cloudflare Workers. Use D1, KV, or R2 for persistent storage.";
|
|
37736
37737
|
|
|
37737
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37738
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/runtime-cf.js
|
|
37738
37739
|
var exports_runtime_cf = {};
|
|
37739
37740
|
__export(exports_runtime_cf, {
|
|
37740
37741
|
cloudflareWorkersFactory: () => cloudflareWorkersFactory2
|
|
@@ -37772,7 +37773,7 @@ var init_runtime_cf = __esm(() => {
|
|
|
37772
37773
|
};
|
|
37773
37774
|
});
|
|
37774
37775
|
|
|
37775
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
37776
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/process-executor.js
|
|
37776
37777
|
import { isatty as isatty2 } from "tty";
|
|
37777
37778
|
|
|
37778
37779
|
class NodeProcessExecutor3 {
|
|
@@ -38082,12 +38083,13 @@ class BunPipeProcessSpawner2 {
|
|
|
38082
38083
|
}
|
|
38083
38084
|
}
|
|
38084
38085
|
function buildExecaOptions2(opts) {
|
|
38085
|
-
const
|
|
38086
|
+
const mode = opts.forceBuffered ? "buffered" : opts.outputPolicy?.mode ?? "buffered";
|
|
38087
|
+
const streamToTerminal = mode === "stream" && (opts.outputPolicy?.mode === "stream" ? opts.outputPolicy.isTTY ?? process.stdout.isTTY ?? isatty2(1) : false);
|
|
38086
38088
|
return {
|
|
38087
38089
|
reject: opts.rejectOnError,
|
|
38088
38090
|
stdin: "ignore",
|
|
38089
38091
|
stripFinalNewline: true,
|
|
38090
|
-
...
|
|
38092
|
+
...mode === "pipe" ? { stdout: "pipe", stderr: "pipe" } : streamToTerminal ? { stdout: ["inherit", "pipe"], stderr: ["inherit", "pipe"] } : { all: true },
|
|
38091
38093
|
...opts.cwd !== undefined ? { cwd: opts.cwd } : {},
|
|
38092
38094
|
...opts.env !== undefined ? { env: opts.env } : {},
|
|
38093
38095
|
...opts.timeout !== undefined ? { timeout: opts.timeout } : {},
|
|
@@ -38157,7 +38159,7 @@ var init_process_executor2 = __esm(() => {
|
|
|
38157
38159
|
ProcessExecutor2 = NodeProcessExecutor3;
|
|
38158
38160
|
});
|
|
38159
38161
|
|
|
38160
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38162
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/runtime-node-bun.js
|
|
38161
38163
|
var exports_runtime_node_bun = {};
|
|
38162
38164
|
__export(exports_runtime_node_bun, {
|
|
38163
38165
|
nodeBunFactory: () => nodeBunFactory3,
|
|
@@ -38225,7 +38227,7 @@ var init_runtime_node_bun2 = __esm(() => {
|
|
|
38225
38227
|
};
|
|
38226
38228
|
});
|
|
38227
38229
|
|
|
38228
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38230
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/platform.js
|
|
38229
38231
|
function isCloudflareWorkerRuntime2() {
|
|
38230
38232
|
return globalThis.navigator?.userAgent?.startsWith("Cloudflare-Workers") ?? false;
|
|
38231
38233
|
}
|
|
@@ -38255,7 +38257,7 @@ function _resetRuntimeFactory2() {
|
|
|
38255
38257
|
}
|
|
38256
38258
|
var _factory, _runtimeName;
|
|
38257
38259
|
|
|
38258
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38260
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/context.js
|
|
38259
38261
|
class RuntimeContext2 {
|
|
38260
38262
|
scope;
|
|
38261
38263
|
runtimeName;
|
|
@@ -38345,7 +38347,7 @@ var init_context2 = __esm(() => {
|
|
|
38345
38347
|
init_runtime_node_bun2();
|
|
38346
38348
|
});
|
|
38347
38349
|
|
|
38348
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38350
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/path.js
|
|
38349
38351
|
function normalizeSeparators2(path7) {
|
|
38350
38352
|
return path7.replaceAll("\\", "/");
|
|
38351
38353
|
}
|
|
@@ -38468,7 +38470,7 @@ var init_path2 = __esm(() => {
|
|
|
38468
38470
|
SEP2 = globalThis.process?.platform === "win32" ? "\\" : "/";
|
|
38469
38471
|
});
|
|
38470
38472
|
|
|
38471
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38473
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/fs.js
|
|
38472
38474
|
async function ensureDirForFile2(path7, fs2 = createNodeFileSystem3()) {
|
|
38473
38475
|
await fs2.ensureDir(dirnamePath(path7));
|
|
38474
38476
|
}
|
|
@@ -38519,7 +38521,7 @@ var init_fs = __esm(() => {
|
|
|
38519
38521
|
init_path2();
|
|
38520
38522
|
});
|
|
38521
38523
|
|
|
38522
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38524
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/process-registry.js
|
|
38523
38525
|
function allocateId() {
|
|
38524
38526
|
nextIdSeq += 1;
|
|
38525
38527
|
return `pe_${Date.now().toString(36)}_${nextIdSeq.toString(36)}`;
|
|
@@ -38643,7 +38645,7 @@ function createInMemoryProcessRegistry2(options) {
|
|
|
38643
38645
|
}
|
|
38644
38646
|
var nextIdSeq = 0;
|
|
38645
38647
|
|
|
38646
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38648
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/runtime-paths.js
|
|
38647
38649
|
function ambientRuntimePaths2() {
|
|
38648
38650
|
const cwd = getProcessCwd2();
|
|
38649
38651
|
return { cwd, home: getHomeDir() ?? cwd };
|
|
@@ -38653,7 +38655,7 @@ var init_runtime_paths = __esm(() => {
|
|
|
38653
38655
|
init_path2();
|
|
38654
38656
|
});
|
|
38655
38657
|
|
|
38656
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38658
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/schema-validation.js
|
|
38657
38659
|
async function loadStructuredConfig(path7, options = {}) {
|
|
38658
38660
|
const content = await (options.fileSystem ?? createNodeFileSystem3()).readFile(path7);
|
|
38659
38661
|
return await parseStructuredConfig(content, path7, options);
|
|
@@ -38930,10 +38932,10 @@ var init_schema_validation2 = __esm(() => {
|
|
|
38930
38932
|
defaultResolve = typeof Bun !== "undefined" ? (specifier, from) => Bun.resolveSync(specifier, from) : undefined;
|
|
38931
38933
|
});
|
|
38932
38934
|
|
|
38933
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38935
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/types.js
|
|
38934
38936
|
var init_types2 = () => {};
|
|
38935
38937
|
|
|
38936
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
38938
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/index.js
|
|
38937
38939
|
var exports_dist2 = {};
|
|
38938
38940
|
__export(exports_dist2, {
|
|
38939
38941
|
writeJsonFile: () => writeJsonFile2,
|
|
@@ -41084,7 +41086,7 @@ var init_mod = __esm(() => {
|
|
|
41084
41086
|
init_config3();
|
|
41085
41087
|
});
|
|
41086
41088
|
|
|
41087
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
41089
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/logger.js
|
|
41088
41090
|
function toLogTapeLevel(level) {
|
|
41089
41091
|
return level === "warn" ? "warning" : level;
|
|
41090
41092
|
}
|
|
@@ -42637,7 +42639,7 @@ var require_src = __commonJS((exports) => {
|
|
|
42637
42639
|
};
|
|
42638
42640
|
});
|
|
42639
42641
|
|
|
42640
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
42642
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/telemetry/sdk.js
|
|
42641
42643
|
function getTelemetryConfig(configPartial = {}) {
|
|
42642
42644
|
return {
|
|
42643
42645
|
enabled: configPartial.enabled ?? CONFIG_DEFAULTS.enabled,
|
|
@@ -42673,7 +42675,7 @@ var init_sdk = __esm(() => {
|
|
|
42673
42675
|
resolvedConfig = getTelemetryConfig();
|
|
42674
42676
|
});
|
|
42675
42677
|
|
|
42676
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
42678
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/telemetry/tracing.js
|
|
42677
42679
|
function isSuppressed(tracer2) {
|
|
42678
42680
|
return tracer2 === undefined && !getResolvedConfig().enabled;
|
|
42679
42681
|
}
|
|
@@ -42713,7 +42715,7 @@ var init_tracing2 = __esm(() => {
|
|
|
42713
42715
|
import_api2 = __toESM(require_src(), 1);
|
|
42714
42716
|
});
|
|
42715
42717
|
|
|
42716
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
42718
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/telemetry/metrics.js
|
|
42717
42719
|
function getMeter() {
|
|
42718
42720
|
return import_api3.metrics.getMeter(METER_NAME, METER_VERSION);
|
|
42719
42721
|
}
|
|
@@ -42810,7 +42812,7 @@ var init_metrics = __esm(() => {
|
|
|
42810
42812
|
instruments = {};
|
|
42811
42813
|
});
|
|
42812
42814
|
|
|
42813
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
42815
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/event-bus/event-bus.js
|
|
42814
42816
|
function busLogger() {
|
|
42815
42817
|
if (!_busLogger)
|
|
42816
42818
|
_busLogger = getLogger2("event-bus");
|
|
@@ -43055,7 +43057,7 @@ var init_event_bus = __esm(() => {
|
|
|
43055
43057
|
init_metrics();
|
|
43056
43058
|
});
|
|
43057
43059
|
|
|
43058
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
43060
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/event-bus/default-observers.js
|
|
43059
43061
|
function obsLogger() {
|
|
43060
43062
|
if (!_obsLogger)
|
|
43061
43063
|
_obsLogger = getLogger2("event-bus.observers");
|
|
@@ -43119,7 +43121,7 @@ var init_default_observers = __esm(() => {
|
|
|
43119
43121
|
init_event_bus();
|
|
43120
43122
|
});
|
|
43121
43123
|
|
|
43122
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
43124
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/event-bus/file-observer.js
|
|
43123
43125
|
function parentDir(filePath) {
|
|
43124
43126
|
const idx = filePath.lastIndexOf("/");
|
|
43125
43127
|
return idx <= 0 ? "." : filePath.slice(0, idx);
|
|
@@ -43217,7 +43219,7 @@ var init_file_observer = __esm(() => {
|
|
|
43217
43219
|
init_logger3();
|
|
43218
43220
|
});
|
|
43219
43221
|
|
|
43220
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
43222
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/internals/drain.js
|
|
43221
43223
|
function settleWithin(promise2, deadline) {
|
|
43222
43224
|
const remaining = deadline - Date.now();
|
|
43223
43225
|
if (remaining <= 0)
|
|
@@ -43232,7 +43234,7 @@ function settleWithin(promise2, deadline) {
|
|
|
43232
43234
|
return settled;
|
|
43233
43235
|
}
|
|
43234
43236
|
|
|
43235
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
43237
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/scheduler/node.js
|
|
43236
43238
|
function parseInterval(cron) {
|
|
43237
43239
|
const trimmed = cron.trim();
|
|
43238
43240
|
const num = Number(trimmed);
|
|
@@ -43325,7 +43327,7 @@ var init_node3 = __esm(() => {
|
|
|
43325
43327
|
init_metrics();
|
|
43326
43328
|
});
|
|
43327
43329
|
|
|
43328
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
43330
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/scheduler-node.js
|
|
43329
43331
|
var exports_scheduler_node = {};
|
|
43330
43332
|
__export(exports_scheduler_node, {
|
|
43331
43333
|
NodeSchedulerAdapter: () => NodeSchedulerAdapter
|
|
@@ -51465,7 +51467,7 @@ var init_drizzle_zod = __esm(() => {
|
|
|
51465
51467
|
};
|
|
51466
51468
|
});
|
|
51467
51469
|
|
|
51468
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
51470
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/schema/drizzle-internals.js
|
|
51469
51471
|
function sqlExpressionToText(value) {
|
|
51470
51472
|
if (typeof value !== "object" || value === null || !("queryChunks" in value)) {
|
|
51471
51473
|
return;
|
|
@@ -51488,7 +51490,7 @@ function getDrizzleTableName(table3) {
|
|
|
51488
51490
|
return String(table3[nameSym]);
|
|
51489
51491
|
}
|
|
51490
51492
|
|
|
51491
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
51493
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/schema/ddl.js
|
|
51492
51494
|
function quoteIdent(name) {
|
|
51493
51495
|
return `"${name.replace(/"/g, '""')}"`;
|
|
51494
51496
|
}
|
|
@@ -51582,7 +51584,7 @@ var init_ddl = __esm(() => {
|
|
|
51582
51584
|
init_sqlite_core();
|
|
51583
51585
|
});
|
|
51584
51586
|
|
|
51585
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
51587
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/schema/define-table.js
|
|
51586
51588
|
function defineTable(name, columns2) {
|
|
51587
51589
|
const table3 = sqliteTable(name, columns2);
|
|
51588
51590
|
let insert2;
|
|
@@ -51616,7 +51618,7 @@ var init_define_table = __esm(() => {
|
|
|
51616
51618
|
init_ddl();
|
|
51617
51619
|
});
|
|
51618
51620
|
|
|
51619
|
-
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.
|
|
51621
|
+
// ../../node_modules/.bun/@gobing-ai+ts-db@0.4.19+035ffc9bc0428b94/node_modules/@gobing-ai/ts-db/dist/schema/index.js
|
|
51620
51622
|
var init_schema = __esm(() => {
|
|
51621
51623
|
init_sqlite_core();
|
|
51622
51624
|
init_define_table();
|
|
@@ -52241,7 +52243,7 @@ var init_dao = __esm(() => {
|
|
|
52241
52243
|
init_workspace_dao();
|
|
52242
52244
|
});
|
|
52243
52245
|
|
|
52244
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
52246
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/errors.js
|
|
52245
52247
|
var WorkflowValidationError, FSMError, RunCollisionError, WorkflowResumeError;
|
|
52246
52248
|
var init_errors6 = __esm(() => {
|
|
52247
52249
|
WorkflowValidationError = class WorkflowValidationError extends Error {
|
|
@@ -52276,12 +52278,12 @@ var init_errors6 = __esm(() => {
|
|
|
52276
52278
|
};
|
|
52277
52279
|
});
|
|
52278
52280
|
|
|
52279
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
52281
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/event-bus/index.js
|
|
52280
52282
|
var init_event_bus2 = __esm(() => {
|
|
52281
52283
|
init_event_bus();
|
|
52282
52284
|
});
|
|
52283
52285
|
|
|
52284
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
52286
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/api-client.js
|
|
52285
52287
|
function sanitizeUrlForObservability(url2) {
|
|
52286
52288
|
try {
|
|
52287
52289
|
const parsed = new URL(url2);
|
|
@@ -52511,12 +52513,12 @@ var init_api_client = __esm(() => {
|
|
|
52511
52513
|
};
|
|
52512
52514
|
});
|
|
52513
52515
|
|
|
52514
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
52516
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/telemetry/index.js
|
|
52515
52517
|
var init_telemetry = __esm(() => {
|
|
52516
52518
|
init_tracing2();
|
|
52517
52519
|
});
|
|
52518
52520
|
|
|
52519
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
52521
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/index.js
|
|
52520
52522
|
var init_dist6 = __esm(() => {
|
|
52521
52523
|
init_api_client();
|
|
52522
52524
|
init_event_bus2();
|
|
@@ -52524,7 +52526,7 @@ var init_dist6 = __esm(() => {
|
|
|
52524
52526
|
init_telemetry();
|
|
52525
52527
|
});
|
|
52526
52528
|
|
|
52527
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
52529
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/run-lifecycle.js
|
|
52528
52530
|
function runtimeBuiltins(workflowName, stateOrNodeId, runId, transitionsTaken, mode) {
|
|
52529
52531
|
return {
|
|
52530
52532
|
workflow: workflowName,
|
|
@@ -52783,7 +52785,7 @@ var init_run_lifecycle = __esm(() => {
|
|
|
52783
52785
|
];
|
|
52784
52786
|
});
|
|
52785
52787
|
|
|
52786
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
52788
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/schema.js
|
|
52787
52789
|
var RESERVED_VAR_NAMES, IDENTIFIER, VarsSchema, EnvSchema, ActionDefSchema, GuardDefSchema, StateMachineWorkflowDefSchema, TransitionFlowWorkflowDefSchema, WorkflowDefSchema;
|
|
52788
52790
|
var init_schema2 = __esm(() => {
|
|
52789
52791
|
init_zod();
|
|
@@ -52868,7 +52870,7 @@ var init_schema2 = __esm(() => {
|
|
|
52868
52870
|
WorkflowDefSchema = exports_external.union([StateMachineWorkflowDefSchema, TransitionFlowWorkflowDefSchema]);
|
|
52869
52871
|
});
|
|
52870
52872
|
|
|
52871
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
52873
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/config.js
|
|
52872
52874
|
async function loadWorkflowDef(path9, options = {}) {
|
|
52873
52875
|
return parseWorkflowDef(await loadStructuredConfig(path9, options), path9);
|
|
52874
52876
|
}
|
|
@@ -53035,7 +53037,7 @@ var init_config4 = __esm(() => {
|
|
|
53035
53037
|
RUNTIME_TEMPLATE_NAMESPACES = new Set(RUNTIME_BUILTIN_KEYS);
|
|
53036
53038
|
});
|
|
53037
53039
|
|
|
53038
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
53040
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/extension/capability-registry.js
|
|
53039
53041
|
class CapabilityRegistry {
|
|
53040
53042
|
kind;
|
|
53041
53043
|
capabilities = new Map;
|
|
@@ -53066,7 +53068,7 @@ class CapabilityRegistry {
|
|
|
53066
53068
|
}
|
|
53067
53069
|
}
|
|
53068
53070
|
|
|
53069
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
53071
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/extension/extension-path.js
|
|
53070
53072
|
function assertRelativeExtensionPath(path9, options = {}) {
|
|
53071
53073
|
const where = options.sourceName !== undefined ? ` declared by "${options.sourceName}"` : "";
|
|
53072
53074
|
if (/^([/\\]|[A-Za-z]:[/\\])/.test(path9)) {
|
|
@@ -53077,20 +53079,20 @@ function assertRelativeExtensionPath(path9, options = {}) {
|
|
|
53077
53079
|
}
|
|
53078
53080
|
}
|
|
53079
53081
|
|
|
53080
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
53082
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/extension/extension-loader.js
|
|
53081
53083
|
var init_extension_loader = () => {};
|
|
53082
53084
|
|
|
53083
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
53085
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/extension/index.js
|
|
53084
53086
|
var init_extension = __esm(() => {
|
|
53085
53087
|
init_extension_loader();
|
|
53086
53088
|
});
|
|
53087
53089
|
|
|
53088
|
-
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.
|
|
53090
|
+
// ../../node_modules/.bun/@gobing-ai+ts-runtime@0.4.19+e40533aaad760d62/node_modules/@gobing-ai/ts-runtime/dist/extension.js
|
|
53089
53091
|
var init_extension2 = __esm(() => {
|
|
53090
53092
|
init_extension();
|
|
53091
53093
|
});
|
|
53092
53094
|
|
|
53093
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53095
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/host.js
|
|
53094
53096
|
class WorkflowEngineHost {
|
|
53095
53097
|
lifecycleBus;
|
|
53096
53098
|
actions = new CapabilityRegistry("workflow action");
|
|
@@ -53259,7 +53261,7 @@ var init_host = __esm(() => {
|
|
|
53259
53261
|
init_errors6();
|
|
53260
53262
|
});
|
|
53261
53263
|
|
|
53262
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53264
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/schema-sql.js
|
|
53263
53265
|
var WORKFLOW_ENGINE_SCHEMA_SQL;
|
|
53264
53266
|
var init_schema_sql = __esm(() => {
|
|
53265
53267
|
WORKFLOW_ENGINE_SCHEMA_SQL = `
|
|
@@ -53332,7 +53334,7 @@ CREATE TABLE IF NOT EXISTS action_runs (
|
|
|
53332
53334
|
`.trim();
|
|
53333
53335
|
});
|
|
53334
53336
|
|
|
53335
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53337
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/persistence.js
|
|
53336
53338
|
async function applyWorkflowEngineSchema(db2) {
|
|
53337
53339
|
for (const statement of WORKFLOW_ENGINE_SCHEMA_SQL.split(";")) {
|
|
53338
53340
|
const sql4 = statement.trim();
|
|
@@ -53621,7 +53623,7 @@ var init_persistence = __esm(() => {
|
|
|
53621
53623
|
init_schema_sql();
|
|
53622
53624
|
});
|
|
53623
53625
|
|
|
53624
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53626
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/variables.js
|
|
53625
53627
|
function mergeVars(workflowVars = {}, overrideVars = {}) {
|
|
53626
53628
|
return { ...workflowVars, ...overrideVars };
|
|
53627
53629
|
}
|
|
@@ -53681,7 +53683,7 @@ var init_variables = __esm(() => {
|
|
|
53681
53683
|
TEMPLATE_REF = /\$\{([^}]+)\}/g;
|
|
53682
53684
|
});
|
|
53683
53685
|
|
|
53684
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53686
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/action-step.js
|
|
53685
53687
|
async function runActionStep(action, vars, deps) {
|
|
53686
53688
|
const { host, persistence, lifecycle, stateOrNodeId, runId } = deps;
|
|
53687
53689
|
const resolved = resolveTemplates(action.options ?? {}, {
|
|
@@ -53739,7 +53741,7 @@ var init_action_step = __esm(() => {
|
|
|
53739
53741
|
init_variables();
|
|
53740
53742
|
});
|
|
53741
53743
|
|
|
53742
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53744
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/state-machine.js
|
|
53743
53745
|
class StateMachineDriver {
|
|
53744
53746
|
options;
|
|
53745
53747
|
constructor(options) {
|
|
@@ -53875,7 +53877,7 @@ var init_state_machine = __esm(() => {
|
|
|
53875
53877
|
EMPTY_OUTCOME = { outcome: "completed", result: undefined };
|
|
53876
53878
|
});
|
|
53877
53879
|
|
|
53878
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53880
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/transition-flow.js
|
|
53879
53881
|
class TransitionFlowDriver {
|
|
53880
53882
|
options;
|
|
53881
53883
|
constructor(options) {
|
|
@@ -53994,7 +53996,7 @@ var init_transition_flow = __esm(() => {
|
|
|
53994
53996
|
init_variables();
|
|
53995
53997
|
});
|
|
53996
53998
|
|
|
53997
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
53999
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/service.js
|
|
53998
54000
|
class WorkflowService {
|
|
53999
54001
|
host;
|
|
54000
54002
|
persistence;
|
|
@@ -54211,7 +54213,7 @@ var init_service = __esm(() => {
|
|
|
54211
54213
|
init_variables();
|
|
54212
54214
|
});
|
|
54213
54215
|
|
|
54214
|
-
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.
|
|
54216
|
+
// ../../node_modules/.bun/@gobing-ai+ts-dual-workflow-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-dual-workflow-engine/dist/index.js
|
|
54215
54217
|
var init_dist7 = __esm(() => {
|
|
54216
54218
|
init_config4();
|
|
54217
54219
|
init_host();
|
|
@@ -54220,7 +54222,7 @@ var init_dist7 = __esm(() => {
|
|
|
54220
54222
|
init_service();
|
|
54221
54223
|
});
|
|
54222
54224
|
|
|
54223
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54225
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.19+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/hash.js
|
|
54224
54226
|
import { createHash } from "crypto";
|
|
54225
54227
|
function stableJson(value) {
|
|
54226
54228
|
if (Array.isArray(value)) {
|
|
@@ -54237,7 +54239,7 @@ function sha256(value) {
|
|
|
54237
54239
|
}
|
|
54238
54240
|
var init_hash = () => {};
|
|
54239
54241
|
|
|
54240
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54242
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.19+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/errors.js
|
|
54241
54243
|
var HistoryImportError;
|
|
54242
54244
|
var init_errors7 = __esm(() => {
|
|
54243
54245
|
HistoryImportError = class HistoryImportError extends Error {
|
|
@@ -54250,7 +54252,7 @@ var init_errors7 = __esm(() => {
|
|
|
54250
54252
|
};
|
|
54251
54253
|
});
|
|
54252
54254
|
|
|
54253
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54255
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.19+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/schema-sql.js
|
|
54254
54256
|
var HISTORY_IMPORT_SCHEMA_SQL;
|
|
54255
54257
|
var init_schema_sql2 = __esm(() => {
|
|
54256
54258
|
HISTORY_IMPORT_SCHEMA_SQL = `
|
|
@@ -54337,7 +54339,7 @@ CREATE TABLE IF NOT EXISTS history_etl_openclaw (
|
|
|
54337
54339
|
`.trim();
|
|
54338
54340
|
});
|
|
54339
54341
|
|
|
54340
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54342
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.19+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/sources.js
|
|
54341
54343
|
function firstString(...values) {
|
|
54342
54344
|
for (const value of values) {
|
|
54343
54345
|
if (typeof value === "string" && value.length > 0)
|
|
@@ -54474,7 +54476,7 @@ var init_sources = __esm(() => {
|
|
|
54474
54476
|
};
|
|
54475
54477
|
});
|
|
54476
54478
|
|
|
54477
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54479
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.19+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/jsonl-importer-dao.js
|
|
54478
54480
|
function targetTableFor(table3) {
|
|
54479
54481
|
if (!VALID_TABLE_NAME.test(table3)) {
|
|
54480
54482
|
throw new HistoryImportError(`Invalid history ETL target table: ${table3}`, { table: table3 });
|
|
@@ -54547,7 +54549,7 @@ var init_jsonl_importer_dao = __esm(() => {
|
|
|
54547
54549
|
init_sources();
|
|
54548
54550
|
});
|
|
54549
54551
|
|
|
54550
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54552
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.19+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/redaction.js
|
|
54551
54553
|
function redactValue(value, rules = DEFAULT_REDACTION_RULES) {
|
|
54552
54554
|
if (typeof value === "string") {
|
|
54553
54555
|
return rules.reduce((current, rule) => current.replace(rule.pattern, rule.replacement), value);
|
|
@@ -54584,7 +54586,7 @@ var init_redaction = __esm(() => {
|
|
|
54584
54586
|
];
|
|
54585
54587
|
});
|
|
54586
54588
|
|
|
54587
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54589
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.19+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/importer.js
|
|
54588
54590
|
async function runJsonlImport(source, options) {
|
|
54589
54591
|
const definition = resolveSourceDefinition(source);
|
|
54590
54592
|
const resolvedSource = definition.source;
|
|
@@ -54774,13 +54776,13 @@ var init_importer = __esm(() => {
|
|
|
54774
54776
|
init_sources();
|
|
54775
54777
|
});
|
|
54776
54778
|
|
|
54777
|
-
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.
|
|
54779
|
+
// ../../node_modules/.bun/@gobing-ai+ts-llm-jsonl-importer@0.4.19+d5c29f764bf0e6e0/node_modules/@gobing-ai/ts-llm-jsonl-importer/dist/index.js
|
|
54778
54780
|
var init_dist8 = __esm(() => {
|
|
54779
54781
|
init_importer();
|
|
54780
54782
|
init_schema_sql2();
|
|
54781
54783
|
});
|
|
54782
54784
|
|
|
54783
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
54785
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/config/extensions.js
|
|
54784
54786
|
function collectExtensions(sourceName, sourceDir, extensions) {
|
|
54785
54787
|
if (extensions === undefined)
|
|
54786
54788
|
return [];
|
|
@@ -54796,7 +54798,7 @@ var init_extensions = __esm(() => {
|
|
|
54796
54798
|
init_dist5();
|
|
54797
54799
|
});
|
|
54798
54800
|
|
|
54799
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
54801
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/types.js
|
|
54800
54802
|
function createFinding(rule, message, filePath, extras = {}) {
|
|
54801
54803
|
return {
|
|
54802
54804
|
ruleId: rule.id,
|
|
@@ -54867,7 +54869,7 @@ var init_types3 = __esm(() => {
|
|
|
54867
54869
|
});
|
|
54868
54870
|
});
|
|
54869
54871
|
|
|
54870
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
54872
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/config/loader.js
|
|
54871
54873
|
async function loadPreset(name, options) {
|
|
54872
54874
|
const merged = await buildMergedRoots(options.roots.map((root) => resolvePath4(root)), options.fileSystem);
|
|
54873
54875
|
const presetPath = findMergedPreset(merged, name);
|
|
@@ -55082,7 +55084,7 @@ var init_loader2 = __esm(() => {
|
|
|
55082
55084
|
FIX_MODE_AUTHORITY = { none: 0, suggest: 1, auto: 2 };
|
|
55083
55085
|
});
|
|
55084
55086
|
|
|
55085
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
55087
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/fixers/test-stub-fixer.js
|
|
55086
55088
|
function normalizeFindingPath(filePath) {
|
|
55087
55089
|
if (!filePath || isAbsolutePath2(filePath))
|
|
55088
55090
|
return null;
|
|
@@ -55147,7 +55149,7 @@ var init_test_stub_fixer = __esm(() => {
|
|
|
55147
55149
|
realFileSystem = createNodeFileSystem3();
|
|
55148
55150
|
});
|
|
55149
55151
|
|
|
55150
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
55152
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/fixers/fixers.js
|
|
55151
55153
|
function registerBuiltinFixers(host, exec) {
|
|
55152
55154
|
const regexFixer = new RegexFixerProvider;
|
|
55153
55155
|
const pathFixer = new PathFixerProvider;
|
|
@@ -55350,7 +55352,10 @@ var init_fixers = __esm(() => {
|
|
|
55350
55352
|
};
|
|
55351
55353
|
});
|
|
55352
55354
|
|
|
55353
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
55355
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/agents/shims.js
|
|
55356
|
+
function getAgentSessionCapability(agent) {
|
|
55357
|
+
return AGENT_SESSION_CAPABILITY[agent];
|
|
55358
|
+
}
|
|
55354
55359
|
function resolveAgentName(input) {
|
|
55355
55360
|
if (isCanonicalName(input))
|
|
55356
55361
|
return input;
|
|
@@ -55387,7 +55392,7 @@ function warnDeprecatedOrAlias(input, canonical) {
|
|
|
55387
55392
|
logger2.warn(`agent '${input}' is an alias; resolving to canonical '${canonical}'`, { input, canonical });
|
|
55388
55393
|
}
|
|
55389
55394
|
}
|
|
55390
|
-
var claudeShim, codexShim, geminiShim, piShim, opencodeShim, antigravityCliShim, openclawShim, hermesShim, ompShim, grokShim, AGENT_SHIMS, TIER1_PRIORITY, DISPLAY_ORDER, TIER2_AGENTS, logger2, ALIAS_TO_CANONICAL;
|
|
55395
|
+
var claudeShim, codexShim, geminiShim, piShim, opencodeShim, antigravityCliShim, openclawShim, hermesShim, ompShim, grokShim, AGENT_SHIMS, AGENT_SESSION_CAPABILITY, TIER1_PRIORITY, DISPLAY_ORDER, TIER2_AGENTS, logger2, ALIAS_TO_CANONICAL;
|
|
55391
55396
|
var init_shims = __esm(() => {
|
|
55392
55397
|
init_dist6();
|
|
55393
55398
|
claudeShim = {
|
|
@@ -55398,8 +55403,13 @@ var init_shims = __esm(() => {
|
|
|
55398
55403
|
getVersionCommand: () => ({ command: "claude", args: ["--version"] }),
|
|
55399
55404
|
getPromptCommand: (options) => {
|
|
55400
55405
|
const args = ["-p", options.input ?? ""];
|
|
55401
|
-
|
|
55406
|
+
const hasSession = options.sessionId !== undefined || options.sessionDir !== undefined;
|
|
55407
|
+
if (hasSession) {
|
|
55408
|
+
if (options.sessionId !== undefined)
|
|
55409
|
+
args.push("--resume", options.sessionId);
|
|
55410
|
+
} else if (options.continue === true) {
|
|
55402
55411
|
args.push("--continue");
|
|
55412
|
+
}
|
|
55403
55413
|
if (options.model !== undefined)
|
|
55404
55414
|
args.push("--model", options.model);
|
|
55405
55415
|
args.push("--output-format", options.mode ?? "text");
|
|
@@ -55414,10 +55424,11 @@ var init_shims = __esm(() => {
|
|
|
55414
55424
|
getHelpCommand: () => ({ command: "codex", args: ["--help"] }),
|
|
55415
55425
|
getVersionCommand: () => ({ command: "codex", args: ["--version"] }),
|
|
55416
55426
|
getPromptCommand: (options) => {
|
|
55417
|
-
|
|
55427
|
+
const hasSession = options.sessionId !== undefined || options.sessionDir !== undefined;
|
|
55428
|
+
if (options.continue === true && !hasSession && options.input !== undefined) {
|
|
55418
55429
|
throw new Error("Codex resume mode does not accept a new prompt");
|
|
55419
55430
|
}
|
|
55420
|
-
const args = options.continue === true ? ["exec", "resume", "--last"] : ["exec", options.input ?? ""];
|
|
55431
|
+
const args = options.continue === true && !hasSession ? ["exec", "resume", "--last"] : ["exec", options.input ?? ""];
|
|
55421
55432
|
if (options.model !== undefined)
|
|
55422
55433
|
args.push("-m", options.model);
|
|
55423
55434
|
if ((options.mode ?? "text") === "json")
|
|
@@ -55452,11 +55463,16 @@ var init_shims = __esm(() => {
|
|
|
55452
55463
|
getVersionCommand: () => ({ command: "pi", args: ["--version"] }),
|
|
55453
55464
|
getPromptCommand: (options) => {
|
|
55454
55465
|
const args = [];
|
|
55455
|
-
|
|
55466
|
+
const hasSession = options.sessionId !== undefined || options.sessionDir !== undefined;
|
|
55467
|
+
if (!hasSession && options.continue !== true)
|
|
55456
55468
|
args.push("--no-session");
|
|
55457
55469
|
args.push("-p", options.input ?? "");
|
|
55458
|
-
if (options.continue === true)
|
|
55470
|
+
if (!hasSession && options.continue === true)
|
|
55459
55471
|
args.push("-c");
|
|
55472
|
+
if (options.sessionDir !== undefined)
|
|
55473
|
+
args.push("--session-dir", options.sessionDir);
|
|
55474
|
+
if (options.sessionId !== undefined)
|
|
55475
|
+
args.push("-r", options.sessionId);
|
|
55460
55476
|
if (options.model !== undefined)
|
|
55461
55477
|
args.push("--model", options.model);
|
|
55462
55478
|
args.push("--mode", options.mode ?? "text");
|
|
@@ -55491,8 +55507,13 @@ var init_shims = __esm(() => {
|
|
|
55491
55507
|
getVersionCommand: () => ({ command: "agy", args: ["--version"] }),
|
|
55492
55508
|
getPromptCommand: (options) => {
|
|
55493
55509
|
const args = ["-p", options.input ?? ""];
|
|
55494
|
-
|
|
55510
|
+
const hasSession = options.sessionId !== undefined || options.sessionDir !== undefined;
|
|
55511
|
+
if (hasSession) {
|
|
55512
|
+
if (options.sessionId !== undefined)
|
|
55513
|
+
args.push("--conversation", options.sessionId);
|
|
55514
|
+
} else if (options.continue === true) {
|
|
55495
55515
|
args.push("--continue");
|
|
55516
|
+
}
|
|
55496
55517
|
if (options.model !== undefined)
|
|
55497
55518
|
args.push("--model", options.model);
|
|
55498
55519
|
return { command: "agy", args };
|
|
@@ -55532,11 +55553,16 @@ var init_shims = __esm(() => {
|
|
|
55532
55553
|
getVersionCommand: () => ({ command: "omp", args: ["--version"] }),
|
|
55533
55554
|
getPromptCommand: (options) => {
|
|
55534
55555
|
const args = [];
|
|
55535
|
-
|
|
55556
|
+
const hasSession = options.sessionId !== undefined || options.sessionDir !== undefined;
|
|
55557
|
+
if (!hasSession && options.continue !== true)
|
|
55536
55558
|
args.push("--no-session");
|
|
55537
55559
|
args.push("-p", options.input ?? "");
|
|
55538
|
-
if (options.continue === true)
|
|
55560
|
+
if (!hasSession && options.continue === true)
|
|
55539
55561
|
args.push("-c");
|
|
55562
|
+
if (options.sessionDir !== undefined)
|
|
55563
|
+
args.push("--session-dir", options.sessionDir);
|
|
55564
|
+
if (options.sessionId !== undefined)
|
|
55565
|
+
args.push("-r", options.sessionId);
|
|
55540
55566
|
if (options.model !== undefined)
|
|
55541
55567
|
args.push("--model", options.model);
|
|
55542
55568
|
args.push("--mode", options.mode ?? "text");
|
|
@@ -55552,8 +55578,13 @@ var init_shims = __esm(() => {
|
|
|
55552
55578
|
getVersionCommand: () => ({ command: "grok", args: ["--version"] }),
|
|
55553
55579
|
getPromptCommand: (options) => {
|
|
55554
55580
|
const args = ["-p", options.input ?? ""];
|
|
55555
|
-
|
|
55581
|
+
const hasSession = options.sessionId !== undefined || options.sessionDir !== undefined;
|
|
55582
|
+
if (hasSession) {
|
|
55583
|
+
if (options.sessionId !== undefined)
|
|
55584
|
+
args.push("--resume", options.sessionId);
|
|
55585
|
+
} else if (options.continue === true) {
|
|
55556
55586
|
args.push("-c");
|
|
55587
|
+
}
|
|
55557
55588
|
if (options.model !== undefined)
|
|
55558
55589
|
args.push("-m", options.model);
|
|
55559
55590
|
const format2 = (options.mode ?? "text") === "json" ? "json" : "plain";
|
|
@@ -55574,6 +55605,18 @@ var init_shims = __esm(() => {
|
|
|
55574
55605
|
omp: ompShim,
|
|
55575
55606
|
grok: grokShim
|
|
55576
55607
|
};
|
|
55608
|
+
AGENT_SESSION_CAPABILITY = {
|
|
55609
|
+
omp: { supportsResumeById: true, supportsSessionDir: true },
|
|
55610
|
+
pi: { supportsResumeById: true, supportsSessionDir: true },
|
|
55611
|
+
claude: { supportsResumeById: true, supportsSessionDir: false },
|
|
55612
|
+
codex: { supportsResumeById: false, supportsSessionDir: false },
|
|
55613
|
+
"antigravity-cli": { supportsResumeById: true, supportsSessionDir: false },
|
|
55614
|
+
grok: { supportsResumeById: true, supportsSessionDir: false },
|
|
55615
|
+
gemini: { supportsResumeById: false, supportsSessionDir: false },
|
|
55616
|
+
opencode: { supportsResumeById: false, supportsSessionDir: false },
|
|
55617
|
+
openclaw: { supportsResumeById: false, supportsSessionDir: false },
|
|
55618
|
+
hermes: { supportsResumeById: false, supportsSessionDir: false }
|
|
55619
|
+
};
|
|
55577
55620
|
TIER1_PRIORITY = [
|
|
55578
55621
|
"pi",
|
|
55579
55622
|
"omp",
|
|
@@ -55601,7 +55644,7 @@ var init_shims = __esm(() => {
|
|
|
55601
55644
|
ALIAS_TO_CANONICAL = Object.fromEntries(Object.values(AGENT_SHIMS).flatMap((shim) => (shim.aliases ?? []).map((alias3) => [alias3, shim.name])));
|
|
55602
55645
|
});
|
|
55603
55646
|
|
|
55604
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
55647
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/identity.js
|
|
55605
55648
|
function buildIdentityPreamble(ctx) {
|
|
55606
55649
|
const sections = [
|
|
55607
55650
|
`You are agent \`${ctx.agentId}\` (${ctx.agentType}) in workspace \`${ctx.workspace}\`.`
|
|
@@ -55661,7 +55704,7 @@ var init_identity = __esm(() => {
|
|
|
55661
55704
|
init_dist5();
|
|
55662
55705
|
});
|
|
55663
55706
|
|
|
55664
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
55707
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/slash-command.js
|
|
55665
55708
|
function isClaudeStyleSlashCommand(input) {
|
|
55666
55709
|
return SLASH_COMMAND_RE.test(input);
|
|
55667
55710
|
}
|
|
@@ -55689,7 +55732,7 @@ var init_slash_command = __esm(() => {
|
|
|
55689
55732
|
SLASH_COMMAND_RE = /^\/([a-zA-Z0-9._-]+):([a-zA-Z0-9._-]+)(\s.*)?$/;
|
|
55690
55733
|
});
|
|
55691
55734
|
|
|
55692
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
55735
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/ai-runner.js
|
|
55693
55736
|
function buildCorrelationEnv(correlation) {
|
|
55694
55737
|
return {
|
|
55695
55738
|
[AGENT_RUN_ID_ENV]: correlation.runId,
|
|
@@ -55825,7 +55868,7 @@ var init_ai_runner = __esm(() => {
|
|
|
55825
55868
|
init_slash_command();
|
|
55826
55869
|
});
|
|
55827
55870
|
|
|
55828
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
55871
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/agent-detector.js
|
|
55829
55872
|
class AgentDetector {
|
|
55830
55873
|
runner;
|
|
55831
55874
|
timeout;
|
|
@@ -55901,7 +55944,7 @@ var init_agent_detector = __esm(() => {
|
|
|
55901
55944
|
VERSION_PATTERN = /(?<version>\d+\.\d+(?:\.\d+)?)/;
|
|
55902
55945
|
});
|
|
55903
55946
|
|
|
55904
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
55947
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/agent-spec.js
|
|
55905
55948
|
function validateAgentId(id) {
|
|
55906
55949
|
if (!/^[a-z][a-z0-9_-]{1,63}$/.test(id)) {
|
|
55907
55950
|
throw new ValueError(`Invalid agent id "${id}": expected 2-64 chars, lowercase alphanumeric, "_" or "-"`);
|
|
@@ -55998,7 +56041,7 @@ var init_agent_spec = __esm(() => {
|
|
|
55998
56041
|
};
|
|
55999
56042
|
});
|
|
56000
56043
|
|
|
56001
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
56044
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/agents/auth-shims.js
|
|
56002
56045
|
function isNonEmpty(value) {
|
|
56003
56046
|
return value !== undefined && value.trim().length > 0;
|
|
56004
56047
|
}
|
|
@@ -56103,7 +56146,7 @@ var init_auth_shims = __esm(() => {
|
|
|
56103
56146
|
};
|
|
56104
56147
|
});
|
|
56105
56148
|
|
|
56106
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
56149
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/model-health-probe.js
|
|
56107
56150
|
class ModelHealthProbeRegistry {
|
|
56108
56151
|
probes = new Map;
|
|
56109
56152
|
register(providerPrefix, probe) {
|
|
@@ -56211,7 +56254,7 @@ var init_model_health_probe = __esm(() => {
|
|
|
56211
56254
|
};
|
|
56212
56255
|
});
|
|
56213
56256
|
|
|
56214
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
56257
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/doctor-runner.js
|
|
56215
56258
|
class DoctorRunner {
|
|
56216
56259
|
detector;
|
|
56217
56260
|
runner;
|
|
@@ -56348,15 +56391,15 @@ var init_doctor_runner = __esm(() => {
|
|
|
56348
56391
|
init_model_health_probe();
|
|
56349
56392
|
});
|
|
56350
56393
|
|
|
56351
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
56394
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/events.js
|
|
56352
56395
|
var init_events = () => {};
|
|
56353
56396
|
|
|
56354
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
56397
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/messages.js
|
|
56355
56398
|
function formatMessage(msg) {
|
|
56356
56399
|
return `[task from=${msg.fromId ?? "operator"} id=${msg.id}] ${msg.body}`;
|
|
56357
56400
|
}
|
|
56358
56401
|
|
|
56359
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
56402
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/team-agent-process.js
|
|
56360
56403
|
import { Buffer as Buffer5 } from "buffer";
|
|
56361
56404
|
|
|
56362
56405
|
class TeamAgentProcess {
|
|
@@ -56490,7 +56533,7 @@ var init_team_agent_process = __esm(() => {
|
|
|
56490
56533
|
init_dist5();
|
|
56491
56534
|
});
|
|
56492
56535
|
|
|
56493
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
56536
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/team-orchestrator.js
|
|
56494
56537
|
class TeamOrchestrator {
|
|
56495
56538
|
configDir;
|
|
56496
56539
|
inbox;
|
|
@@ -56619,7 +56662,7 @@ var init_team_orchestrator = __esm(() => {
|
|
|
56619
56662
|
init_team_agent_process();
|
|
56620
56663
|
});
|
|
56621
56664
|
|
|
56622
|
-
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.
|
|
56665
|
+
// ../../node_modules/.bun/@gobing-ai+ts-ai-runner@0.4.19+15c6896e8ddc6ea7/node_modules/@gobing-ai/ts-ai-runner/dist/index.js
|
|
56623
56666
|
var exports_dist3 = {};
|
|
56624
56667
|
__export(exports_dist3, {
|
|
56625
56668
|
validateAgentId: () => validateAgentId,
|
|
@@ -56632,6 +56675,7 @@ __export(exports_dist3, {
|
|
|
56632
56675
|
isAgentName: () => isAgentName,
|
|
56633
56676
|
getGitContext: () => getGitContext,
|
|
56634
56677
|
getAgentShim: () => getAgentShim,
|
|
56678
|
+
getAgentSessionCapability: () => getAgentSessionCapability,
|
|
56635
56679
|
formatMessage: () => formatMessage,
|
|
56636
56680
|
extractProvider: () => extractProvider,
|
|
56637
56681
|
extractModelName: () => extractModelName,
|
|
@@ -56670,7 +56714,7 @@ var init_dist9 = __esm(() => {
|
|
|
56670
56714
|
init_team_orchestrator();
|
|
56671
56715
|
});
|
|
56672
56716
|
|
|
56673
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
56717
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/config-access.js
|
|
56674
56718
|
function stringArray(value) {
|
|
56675
56719
|
return Array.isArray(value) && value.every((item) => typeof item === "string") ? value : undefined;
|
|
56676
56720
|
}
|
|
@@ -56708,7 +56752,7 @@ function parseInlineFlags(source) {
|
|
|
56708
56752
|
return { flags, rest: source.slice(match[0].length) };
|
|
56709
56753
|
}
|
|
56710
56754
|
|
|
56711
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
56755
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/glob-match.js
|
|
56712
56756
|
function matchesAny(path9, patterns) {
|
|
56713
56757
|
if (patterns === undefined || patterns.length === 0)
|
|
56714
56758
|
return true;
|
|
@@ -56756,7 +56800,7 @@ function escapeRegExp(value) {
|
|
|
56756
56800
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
56757
56801
|
}
|
|
56758
56802
|
|
|
56759
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
56803
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/file-discovery.js
|
|
56760
56804
|
async function discoverFiles2(options) {
|
|
56761
56805
|
const fs3 = options.fs ?? createNodeFileSystem3();
|
|
56762
56806
|
const allFiles = await walkDir2(options.workdir, fs3, DEFAULT_EXCLUDES);
|
|
@@ -56784,12 +56828,12 @@ var init_file_discovery = __esm(() => {
|
|
|
56784
56828
|
DEFAULT_EXCLUDES = new Set([".git", "node_modules", "dist", ".coverage", ".astro", ".wrangler"]);
|
|
56785
56829
|
});
|
|
56786
56830
|
|
|
56787
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
56831
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/file-utils.js
|
|
56788
56832
|
var init_file_utils = __esm(() => {
|
|
56789
56833
|
init_file_discovery();
|
|
56790
56834
|
});
|
|
56791
56835
|
|
|
56792
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
56836
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/agent-detection-evaluator.js
|
|
56793
56837
|
class AgentDetectionEvaluator {
|
|
56794
56838
|
detector;
|
|
56795
56839
|
constructor(detector = new AgentDetector) {
|
|
@@ -56817,7 +56861,7 @@ var init_agent_detection_evaluator = __esm(() => {
|
|
|
56817
56861
|
init_file_utils();
|
|
56818
56862
|
});
|
|
56819
56863
|
|
|
56820
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
56864
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/coverage-gate-evaluator.js
|
|
56821
56865
|
class CoverageGateEvaluator {
|
|
56822
56866
|
constructor() {}
|
|
56823
56867
|
async evaluate(rule, context4) {
|
|
@@ -56901,7 +56945,7 @@ var init_coverage_gate_evaluator = __esm(() => {
|
|
|
56901
56945
|
init_file_utils();
|
|
56902
56946
|
});
|
|
56903
56947
|
|
|
56904
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
56948
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/exit-code-evaluator.js
|
|
56905
56949
|
class ExitCodeEvaluator {
|
|
56906
56950
|
executor;
|
|
56907
56951
|
constructor(executor = nodeBunFactory3.createProcessExecutor()) {
|
|
@@ -56937,7 +56981,7 @@ var init_exit_code_evaluator = __esm(() => {
|
|
|
56937
56981
|
init_file_utils();
|
|
56938
56982
|
});
|
|
56939
56983
|
|
|
56940
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
56984
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/forbidden-import-evaluator.js
|
|
56941
56985
|
class ForbiddenImportEvaluator {
|
|
56942
56986
|
constructor() {}
|
|
56943
56987
|
async evaluate(rule, context4) {
|
|
@@ -57018,7 +57062,7 @@ var init_forbidden_import_evaluator = __esm(() => {
|
|
|
57018
57062
|
init_file_utils();
|
|
57019
57063
|
});
|
|
57020
57064
|
|
|
57021
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57065
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/import-boundary-evaluator.js
|
|
57022
57066
|
class ImportBoundaryEvaluator {
|
|
57023
57067
|
async evaluate(rule, context4) {
|
|
57024
57068
|
const config4 = rule.evaluator.config ?? {};
|
|
@@ -57111,7 +57155,7 @@ var init_import_boundary_evaluator = __esm(() => {
|
|
|
57111
57155
|
init_file_utils();
|
|
57112
57156
|
});
|
|
57113
57157
|
|
|
57114
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57158
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/path-evaluator.js
|
|
57115
57159
|
class PathEvaluator {
|
|
57116
57160
|
constructor() {}
|
|
57117
57161
|
async evaluate(rule, context4) {
|
|
@@ -57172,7 +57216,7 @@ var init_path_evaluator = __esm(() => {
|
|
|
57172
57216
|
init_file_utils();
|
|
57173
57217
|
});
|
|
57174
57218
|
|
|
57175
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57219
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/regex-evaluator.js
|
|
57176
57220
|
class RegexEvaluator {
|
|
57177
57221
|
constructor() {}
|
|
57178
57222
|
async evaluate(rule, context4) {
|
|
@@ -57250,7 +57294,7 @@ var init_regex_evaluator = __esm(() => {
|
|
|
57250
57294
|
init_file_utils();
|
|
57251
57295
|
});
|
|
57252
57296
|
|
|
57253
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57297
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/ripgrep-evaluator.js
|
|
57254
57298
|
class RipgrepEvaluator {
|
|
57255
57299
|
executor;
|
|
57256
57300
|
constructor(executor = nodeBunFactory3.createProcessExecutor()) {
|
|
@@ -57343,7 +57387,7 @@ var init_ripgrep_evaluator = __esm(() => {
|
|
|
57343
57387
|
init_file_utils();
|
|
57344
57388
|
});
|
|
57345
57389
|
|
|
57346
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57390
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/schema-artifact-evaluator.js
|
|
57347
57391
|
class SchemaArtifactEvaluator {
|
|
57348
57392
|
constructor() {}
|
|
57349
57393
|
async evaluate(rule, context4) {
|
|
@@ -57421,7 +57465,7 @@ var init_schema_artifact_evaluator = __esm(() => {
|
|
|
57421
57465
|
init_file_utils();
|
|
57422
57466
|
});
|
|
57423
57467
|
|
|
57424
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57468
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/secrets-scanner-evaluator.js
|
|
57425
57469
|
class SecretsScannerEvaluator {
|
|
57426
57470
|
constructor() {}
|
|
57427
57471
|
async evaluate(rule, context4) {
|
|
@@ -57489,7 +57533,7 @@ var init_secrets_scanner_evaluator = __esm(() => {
|
|
|
57489
57533
|
ALL_CATEGORIES = Object.keys(BUILTIN_PATTERNS);
|
|
57490
57534
|
});
|
|
57491
57535
|
|
|
57492
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57536
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/sg-evaluator.js
|
|
57493
57537
|
class SgEvaluator {
|
|
57494
57538
|
executor;
|
|
57495
57539
|
constructor(executor = nodeBunFactory3.createProcessExecutor()) {
|
|
@@ -57586,7 +57630,7 @@ var init_sg_evaluator = __esm(() => {
|
|
|
57586
57630
|
init_file_utils();
|
|
57587
57631
|
});
|
|
57588
57632
|
|
|
57589
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57633
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/resolvers/test-path-resolver.js
|
|
57590
57634
|
class TypeScriptTestPathResolver {
|
|
57591
57635
|
name = "typescript";
|
|
57592
57636
|
constructor() {}
|
|
@@ -57669,7 +57713,7 @@ function testify(rel) {
|
|
|
57669
57713
|
return `${dir}test_${base2}`;
|
|
57670
57714
|
}
|
|
57671
57715
|
|
|
57672
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57716
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/test-location-evaluator.js
|
|
57673
57717
|
class TestLocationEvaluator {
|
|
57674
57718
|
resolvers;
|
|
57675
57719
|
constructor(resolvers) {
|
|
@@ -57744,7 +57788,7 @@ var init_test_location_evaluator = __esm(() => {
|
|
|
57744
57788
|
TYPESCRIPT_FALLBACK = new TypeScriptTestPathResolver;
|
|
57745
57789
|
});
|
|
57746
57790
|
|
|
57747
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57791
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/evaluators/tsdoc-export-evaluator.js
|
|
57748
57792
|
class TsdocExportEvaluator {
|
|
57749
57793
|
constructor() {}
|
|
57750
57794
|
async evaluate(rule, context4) {
|
|
@@ -57829,7 +57873,7 @@ var init_tsdoc_export_evaluator = __esm(() => {
|
|
|
57829
57873
|
};
|
|
57830
57874
|
});
|
|
57831
57875
|
|
|
57832
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57876
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/formatters/json.js
|
|
57833
57877
|
class JsonFormatter {
|
|
57834
57878
|
constructor() {}
|
|
57835
57879
|
format(result) {
|
|
@@ -57837,7 +57881,7 @@ class JsonFormatter {
|
|
|
57837
57881
|
}
|
|
57838
57882
|
}
|
|
57839
57883
|
|
|
57840
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57884
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/formatters/text.js
|
|
57841
57885
|
class TextFormatter {
|
|
57842
57886
|
constructor() {}
|
|
57843
57887
|
format(result) {
|
|
@@ -57851,7 +57895,7 @@ class TextFormatter {
|
|
|
57851
57895
|
}
|
|
57852
57896
|
}
|
|
57853
57897
|
|
|
57854
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57898
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/host/builtins.js
|
|
57855
57899
|
function registerBuiltins(host, executor) {
|
|
57856
57900
|
const path9 = new PathEvaluator;
|
|
57857
57901
|
host.evaluators.register("regex", new RegexEvaluator, "builtin");
|
|
@@ -57891,7 +57935,7 @@ var init_builtins = __esm(() => {
|
|
|
57891
57935
|
init_tsdoc_export_evaluator();
|
|
57892
57936
|
});
|
|
57893
57937
|
|
|
57894
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57938
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/host/rule-engine-host.js
|
|
57895
57939
|
class RuleEngineHost {
|
|
57896
57940
|
evaluators;
|
|
57897
57941
|
formatters;
|
|
@@ -57908,7 +57952,7 @@ var init_rule_engine_host = __esm(() => {
|
|
|
57908
57952
|
init_extension2();
|
|
57909
57953
|
});
|
|
57910
57954
|
|
|
57911
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
57955
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/engine.js
|
|
57912
57956
|
class RuleEngine {
|
|
57913
57957
|
host;
|
|
57914
57958
|
events;
|
|
@@ -58079,7 +58123,7 @@ var init_engine = __esm(() => {
|
|
|
58079
58123
|
init_types3();
|
|
58080
58124
|
});
|
|
58081
58125
|
|
|
58082
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58126
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/host/bundled-rules.js
|
|
58083
58127
|
async function bundledRulesRoot() {
|
|
58084
58128
|
if (cachedRoot2 !== undefined)
|
|
58085
58129
|
return cachedRoot2;
|
|
@@ -58130,7 +58174,7 @@ var init_bundled_rules = __esm(() => {
|
|
|
58130
58174
|
init_dist5();
|
|
58131
58175
|
});
|
|
58132
58176
|
|
|
58133
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58177
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/persistence/db-adapter.js
|
|
58134
58178
|
class DbRulePersistenceAdapter {
|
|
58135
58179
|
db;
|
|
58136
58180
|
constructor(db2) {
|
|
@@ -58164,7 +58208,7 @@ class DbRulePersistenceAdapter {
|
|
|
58164
58208
|
}
|
|
58165
58209
|
}
|
|
58166
58210
|
|
|
58167
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58211
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/persistence/schema.js
|
|
58168
58212
|
var RULE_ENGINE_SCHEMA_SQL = `
|
|
58169
58213
|
CREATE TABLE IF NOT EXISTS rule_runs (
|
|
58170
58214
|
id TEXT PRIMARY KEY,
|
|
@@ -58210,10 +58254,10 @@ CREATE TABLE IF NOT EXISTS rule_eval_runs (
|
|
|
58210
58254
|
CREATE INDEX IF NOT EXISTS idx_rule_eval_runs_run_id ON rule_eval_runs (run_id);
|
|
58211
58255
|
`;
|
|
58212
58256
|
|
|
58213
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58257
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/persistence/index.js
|
|
58214
58258
|
var init_persistence2 = () => {};
|
|
58215
58259
|
|
|
58216
|
-
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.
|
|
58260
|
+
// ../../node_modules/.bun/@gobing-ai+ts-rule-engine@0.4.19+eb8900f44f4776f9/node_modules/@gobing-ai/ts-rule-engine/dist/index.js
|
|
58217
58261
|
var init_dist10 = __esm(() => {
|
|
58218
58262
|
init_extensions();
|
|
58219
58263
|
init_loader2();
|
|
@@ -58433,7 +58477,7 @@ ${SYSTEM_EVENTS_SCHEMA_SQL}
|
|
|
58433
58477
|
];
|
|
58434
58478
|
});
|
|
58435
58479
|
|
|
58436
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
58480
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/job-queue/db-job-queue.js
|
|
58437
58481
|
function queueLogger() {
|
|
58438
58482
|
if (!_queueLogger)
|
|
58439
58483
|
_queueLogger = getLogger2("job-queue");
|
|
@@ -58710,7 +58754,7 @@ var init_db_job_queue = __esm(() => {
|
|
|
58710
58754
|
init_tracing2();
|
|
58711
58755
|
});
|
|
58712
58756
|
|
|
58713
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
58757
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/job-queue-db.js
|
|
58714
58758
|
var exports_job_queue_db = {};
|
|
58715
58759
|
__export(exports_job_queue_db, {
|
|
58716
58760
|
DBQueueConsumer: () => DBQueueConsumer,
|
|
@@ -61083,8 +61127,7 @@ class AgentService {
|
|
|
61083
61127
|
return { ok: false, exitCode: 2, message: "Prompt is required" };
|
|
61084
61128
|
}
|
|
61085
61129
|
const jsonOutput = silent || booleanFlag(flags, "json");
|
|
61086
|
-
const
|
|
61087
|
-
const outputPolicy = forceBuffered ? { mode: "buffered" } : jsonOutput ? { mode: "buffered" } : { mode: "stream", isTTY: isatty3(1) };
|
|
61130
|
+
const outputPolicy = nonInteractive ? { mode: "pipe" } : silent || jsonOutput ? { mode: "buffered" } : { mode: "stream", isTTY: isatty3(1) };
|
|
61088
61131
|
const outputMode = outputPolicy.mode;
|
|
61089
61132
|
let publishPid;
|
|
61090
61133
|
const runner = deps?.runner ?? new AiRunner({
|
|
@@ -61135,6 +61178,8 @@ class AgentService {
|
|
|
61135
61178
|
const model = explicitModel ?? currentModel;
|
|
61136
61179
|
const translated = prompt !== undefined && isClaudeStyleSlashCommand(prompt) ? translateSlashCommand(agent, prompt) : undefined;
|
|
61137
61180
|
const input = translated ?? prompt;
|
|
61181
|
+
const sessionDir = stringFlag(flags, "session-dir", "") || stringFlag(flags, "sessionDir", "") || undefined;
|
|
61182
|
+
const sessionId = stringFlag(flags, "session-id", "") || stringFlag(flags, "sessionId", "") || undefined;
|
|
61138
61183
|
const promptOptions = {
|
|
61139
61184
|
input,
|
|
61140
61185
|
continue: continueFlag || undefined,
|
|
@@ -61143,7 +61188,9 @@ class AgentService {
|
|
|
61143
61188
|
...purpose !== undefined ? { purpose } : {},
|
|
61144
61189
|
...tags !== undefined ? { tags } : {},
|
|
61145
61190
|
...systemPrompt !== undefined ? { systemPrompt } : {},
|
|
61146
|
-
...taskId !== undefined ? { taskId } : {}
|
|
61191
|
+
...taskId !== undefined ? { taskId } : {},
|
|
61192
|
+
...sessionDir !== undefined ? { sessionDir } : {},
|
|
61193
|
+
...sessionId !== undefined ? { sessionId } : {}
|
|
61147
61194
|
};
|
|
61148
61195
|
let shimCommand;
|
|
61149
61196
|
try {
|
|
@@ -61179,6 +61226,7 @@ class AgentService {
|
|
|
61179
61226
|
continue: continueFlag,
|
|
61180
61227
|
stdinInteractive: false,
|
|
61181
61228
|
...model !== undefined ? { model } : {},
|
|
61229
|
+
...sessionId !== undefined ? { sessionId } : {},
|
|
61182
61230
|
...translated !== undefined && prompt !== undefined ? { translatedFrom: traceSafePrompt(prompt) } : {}
|
|
61183
61231
|
};
|
|
61184
61232
|
if (attempt === 0) {
|
|
@@ -61273,35 +61321,17 @@ class AgentService {
|
|
|
61273
61321
|
...observer !== undefined ? { observer } : {}
|
|
61274
61322
|
};
|
|
61275
61323
|
}
|
|
61276
|
-
hasWarnedDeprecation = false;
|
|
61277
|
-
warnDeprecationOnce(message) {
|
|
61278
|
-
if (!this.hasWarnedDeprecation) {
|
|
61279
|
-
this.ctx.output.error(`Warning: ${message}`);
|
|
61280
|
-
this.hasWarnedDeprecation = true;
|
|
61281
|
-
}
|
|
61282
|
-
}
|
|
61283
61324
|
async resolveAgent(prompt, flags, doctorRunner) {
|
|
61284
61325
|
const raw = stringFlag(flags, "agent", "auto");
|
|
61285
61326
|
if (raw === "auto")
|
|
61286
61327
|
return this.resolveAgentAuto(prompt, flags, doctorRunner);
|
|
61287
|
-
if (raw === "inline")
|
|
61288
|
-
return
|
|
61289
|
-
ok: false,
|
|
61290
|
-
exitCode: 2,
|
|
61291
|
-
message: "'inline' selects in-session execution and cannot be passed to 'spur agent run', which always starts a subprocess. Run the backing skill directly in the current session, or redirect pipeline stages via agent.default / '--agent auto' / '--agent <name>' (ADR-046)."
|
|
61292
|
-
};
|
|
61293
|
-
}
|
|
61328
|
+
if (raw === "inline")
|
|
61329
|
+
return this.resolveAgentAuto(prompt, flags, doctorRunner);
|
|
61294
61330
|
return this.resolveExecutorSelector(raw, doctorRunner, "explicit");
|
|
61295
61331
|
}
|
|
61296
61332
|
async resolveAgentAuto(prompt, flags, doctorRunner) {
|
|
61297
61333
|
const config4 = this.ctx.agentConfig;
|
|
61298
61334
|
const phase = extractPhase(prompt);
|
|
61299
|
-
const phaseMap = config4?.["default-by-phase"];
|
|
61300
|
-
const phaseSelector = phase !== undefined ? phaseMap?.[phase] : undefined;
|
|
61301
|
-
if (phaseSelector !== undefined && phase !== undefined) {
|
|
61302
|
-
this.warnDeprecationOnce(`default-by-phase is deprecated; use stage model_policy instead. Phase '${phase}' mapped to '${phaseSelector}'.`);
|
|
61303
|
-
return this.resolveExecutorSelector(phaseSelector, doctorRunner, "phase", phase);
|
|
61304
|
-
}
|
|
61305
61335
|
const stageFlag = stringFlag(flags, "stage", "");
|
|
61306
61336
|
const targetStageId = stageFlag !== "" ? stageFlag : phase !== undefined ? phase : undefined;
|
|
61307
61337
|
if (targetStageId !== undefined) {
|
|
@@ -62694,8 +62724,10 @@ var init_feature_check = __esm(() => {
|
|
|
62694
62724
|
await this.checkChildrenLimit(featureId2, options.featuresDir, findings);
|
|
62695
62725
|
}
|
|
62696
62726
|
const dogfoodDir = options?.dogfoodDir ?? (options?.featuresDir ? join9(dirname8(options.featuresDir), "dogfood") : undefined);
|
|
62697
|
-
const
|
|
62698
|
-
|
|
62727
|
+
const primaryTasksDir = options?.tasksDir ?? options?.tasksDirs?.[0];
|
|
62728
|
+
const runDir = options?.runDir ?? (primaryTasksDir ? defaultVerdictRunDir(primaryTasksDir) : undefined);
|
|
62729
|
+
const taskScanDirs = options?.tasksDirs && options.tasksDirs.length > 0 ? options.tasksDirs : options?.tasksDir ? [options.tasksDir] : [];
|
|
62730
|
+
await this.runL4(doc2, featureId2, status, taskScanDirs, dogfoodDir, runDir, findings);
|
|
62699
62731
|
return { id: featureId2, ...this.summarizeWithStatus(status, findings, strict, options?.severityOverrides) };
|
|
62700
62732
|
}
|
|
62701
62733
|
runL3(doc2, findings) {
|
|
@@ -62807,49 +62839,49 @@ var init_feature_check = __esm(() => {
|
|
|
62807
62839
|
});
|
|
62808
62840
|
}
|
|
62809
62841
|
}
|
|
62810
|
-
async runL4(doc2, featureId2, status,
|
|
62811
|
-
if (
|
|
62842
|
+
async runL4(doc2, featureId2, status, tasksDirs, dogfoodDir, runDir, findings) {
|
|
62843
|
+
if (tasksDirs.length === 0)
|
|
62812
62844
|
return;
|
|
62813
62845
|
let linkedTasks = 0;
|
|
62814
62846
|
const incompleteTasks = [];
|
|
62815
62847
|
const linkedTaskAc = [];
|
|
62816
62848
|
const linkedTaskSolutions = [];
|
|
62817
62849
|
const linkedTaskRecords = [];
|
|
62818
|
-
|
|
62819
|
-
|
|
62820
|
-
|
|
62821
|
-
|
|
62822
|
-
|
|
62823
|
-
try {
|
|
62824
|
-
const raw = await this.fs.readFile(`${tasksDir}/${entry}`);
|
|
62825
|
-
const taskDoc = MarkdownDocument.parse(raw, "task");
|
|
62826
|
-
const tfm = taskDoc.frontmatterData ?? {};
|
|
62827
|
-
const tfid = tfm.feature_id ?? tfm["feature-id"];
|
|
62828
|
-
if (tfid !== featureId2)
|
|
62850
|
+
for (const tasksDir of tasksDirs) {
|
|
62851
|
+
try {
|
|
62852
|
+
const entries = await this.fs.readDir(tasksDir);
|
|
62853
|
+
for (const entry of entries) {
|
|
62854
|
+
if (!/^\d{4}_.+\.md$/.test(entry))
|
|
62829
62855
|
continue;
|
|
62830
|
-
|
|
62831
|
-
|
|
62832
|
-
|
|
62833
|
-
|
|
62834
|
-
|
|
62856
|
+
try {
|
|
62857
|
+
const raw = await this.fs.readFile(`${tasksDir}/${entry}`);
|
|
62858
|
+
const taskDoc = MarkdownDocument.parse(raw, "task");
|
|
62859
|
+
const tfm = taskDoc.frontmatterData ?? {};
|
|
62860
|
+
const tfid = tfm.feature_id ?? tfm["feature-id"];
|
|
62861
|
+
if (tfid !== featureId2)
|
|
62862
|
+
continue;
|
|
62863
|
+
linkedTasks += 1;
|
|
62864
|
+
const tStatus = tfm.status ?? "backlog";
|
|
62865
|
+
const wbs = entry.match(/^(\d{4})_/)?.[1] ?? entry;
|
|
62866
|
+
if (tStatus !== "done" && tStatus !== "cancelled") {
|
|
62867
|
+
incompleteTasks.push(wbs);
|
|
62868
|
+
}
|
|
62869
|
+
const tac = stripAcFence(taskDoc.getSection("Acceptance Criteria") ?? "");
|
|
62870
|
+
if (tac.trim().length > 0)
|
|
62871
|
+
linkedTaskAc.push(tac);
|
|
62872
|
+
linkedTaskSolutions.push(taskDoc.getSection("Solution") ?? "");
|
|
62873
|
+
linkedTaskRecords.push({ wbs, status: tStatus, ac: tac });
|
|
62874
|
+
} catch {
|
|
62875
|
+
findings.push({
|
|
62876
|
+
layer: "L4",
|
|
62877
|
+
code: FINDING_CODES.L4_LINKED_TASK_PARSE_FAILED,
|
|
62878
|
+
severity: "warning",
|
|
62879
|
+
section: "",
|
|
62880
|
+
message: `Linked task file "${entry}" failed to parse \u2014 dangling feature_id edge`
|
|
62881
|
+
});
|
|
62835
62882
|
}
|
|
62836
|
-
const tac = stripAcFence(taskDoc.getSection("Acceptance Criteria") ?? "");
|
|
62837
|
-
if (tac.trim().length > 0)
|
|
62838
|
-
linkedTaskAc.push(tac);
|
|
62839
|
-
linkedTaskSolutions.push(taskDoc.getSection("Solution") ?? "");
|
|
62840
|
-
linkedTaskRecords.push({ wbs, status: tStatus, ac: tac });
|
|
62841
|
-
} catch {
|
|
62842
|
-
findings.push({
|
|
62843
|
-
layer: "L4",
|
|
62844
|
-
code: FINDING_CODES.L4_LINKED_TASK_PARSE_FAILED,
|
|
62845
|
-
severity: "warning",
|
|
62846
|
-
section: "",
|
|
62847
|
-
message: `Linked task file "${entry}" failed to parse \u2014 dangling feature_id edge`
|
|
62848
|
-
});
|
|
62849
62883
|
}
|
|
62850
|
-
}
|
|
62851
|
-
} catch {
|
|
62852
|
-
return;
|
|
62884
|
+
} catch {}
|
|
62853
62885
|
}
|
|
62854
62886
|
const acBody = stripAcFence(doc2.getSection("Acceptance Criteria") ?? "");
|
|
62855
62887
|
const hasScenarios = /^\s*Scenario:/m.test(acBody);
|
|
@@ -62954,7 +62986,9 @@ var init_feature_check = __esm(() => {
|
|
|
62954
62986
|
artifacts2.set(wbs, artifact);
|
|
62955
62987
|
const diagnosticParts = [];
|
|
62956
62988
|
if (artifact.diagnostics.artifactError !== undefined) {
|
|
62957
|
-
|
|
62989
|
+
if (artifact.diagnostics.artifactError !== "artifact is missing") {
|
|
62990
|
+
diagnosticParts.push(artifact.diagnostics.artifactError);
|
|
62991
|
+
}
|
|
62958
62992
|
}
|
|
62959
62993
|
if (artifact.diagnostics.rejectedRowCount > 0) {
|
|
62960
62994
|
diagnosticParts.push(`${artifact.diagnostics.rejectedRowCount} rejected coverage row(s)`);
|
|
@@ -63317,9 +63351,13 @@ class FeatureService {
|
|
|
63317
63351
|
}
|
|
63318
63352
|
const checkL4Gate = async () => {
|
|
63319
63353
|
const checkSvc = new FeatureCheckService(this.ctx.fs);
|
|
63354
|
+
const tasksDirs = this.ctx.foldersConfig ? Object.keys(this.ctx.foldersConfig.folders).map((p) => this.ctx.fs.resolve(p)) : [this.ctx.tasksDir];
|
|
63355
|
+
if (!tasksDirs.includes(this.ctx.tasksDir))
|
|
63356
|
+
tasksDirs.unshift(this.ctx.tasksDir);
|
|
63320
63357
|
const res = await checkSvc.check(feature.filePath, featureId2, {
|
|
63321
63358
|
featuresDir: this.ctx.featuresDir,
|
|
63322
63359
|
tasksDir: this.ctx.tasksDir,
|
|
63360
|
+
tasksDirs,
|
|
63323
63361
|
runDir: defaultVerdictRunDir(this.ctx.tasksDir)
|
|
63324
63362
|
});
|
|
63325
63363
|
const l4Errors = res.findings.filter((f) => f.layer === "L4" && f.severity === "error");
|
|
@@ -66285,12 +66323,13 @@ var init_task_check = __esm(() => {
|
|
|
66285
66323
|
const featureTerminal = featureStatus === "done" || featureStatus === "cancelled";
|
|
66286
66324
|
const taskTerminal = status === "done" || status === "cancelled";
|
|
66287
66325
|
if (featureTerminal && !taskTerminal) {
|
|
66326
|
+
const reopenGuide = featureStatus === "done" ? `Reopen: \`spur feature update ${featureId2} active\` (or \`spur feature sync ${featureId2} --force\` when non-terminal tasks are already linked). Alternatively re-parent: \`spur task update <wbs> --feature <otherId>\`.` : `Feature is cancelled \u2014 re-parent or unlink this live task (\`spur task update <wbs> --feature <otherId>\`).`;
|
|
66288
66327
|
findings.push({
|
|
66289
66328
|
layer: "L4",
|
|
66290
66329
|
code: FINDING_CODES.L4_FEATURE_TERMINAL,
|
|
66291
66330
|
severity: "error",
|
|
66292
66331
|
section: "",
|
|
66293
|
-
message: `Feature "${featureId2}" is ${featureStatus} \u2014
|
|
66332
|
+
message: `Feature "${featureId2}" is ${featureStatus} \u2014 live tasks cannot stay linked without action. ${reopenGuide}`
|
|
66294
66333
|
});
|
|
66295
66334
|
}
|
|
66296
66335
|
await this.checkAcCoverage(doc2, featurePath, featureId2, findings);
|
|
@@ -67873,31 +67912,45 @@ function extractRequirements(text4) {
|
|
|
67873
67912
|
const lines = text4.split(`
|
|
67874
67913
|
`);
|
|
67875
67914
|
let inTable = false;
|
|
67915
|
+
let colMap = null;
|
|
67876
67916
|
for (const line of lines) {
|
|
67877
67917
|
const trimmed = line.trim();
|
|
67878
67918
|
if (!trimmed.startsWith("|"))
|
|
67879
67919
|
continue;
|
|
67880
67920
|
const cells = trimmed.split("|").map((c3) => c3.trim()).filter(Boolean);
|
|
67881
67921
|
if (!inTable && cells.length >= 2) {
|
|
67882
|
-
const h0 = (cells[0] ?? "").toLowerCase();
|
|
67883
|
-
const
|
|
67884
|
-
if (
|
|
67885
|
-
|
|
67886
|
-
|
|
67922
|
+
const h0 = (cells[0] ?? "").toLowerCase().trim();
|
|
67923
|
+
const h0IsId = h0.includes("req") || h0 === "requirement" || h0 === "r#" || h0 === "r" || /^r\d+$/.test(h0);
|
|
67924
|
+
if (h0IsId) {
|
|
67925
|
+
const statusIdx = cells.findIndex((c3) => {
|
|
67926
|
+
const x = c3.toLowerCase().trim();
|
|
67927
|
+
return x.includes("status") || x === "verdict";
|
|
67928
|
+
});
|
|
67929
|
+
if (statusIdx >= 0) {
|
|
67930
|
+
const evidenceIdx = cells.findIndex((c3) => c3.toLowerCase().includes("evidence"));
|
|
67931
|
+
colMap = {
|
|
67932
|
+
id: 0,
|
|
67933
|
+
status: statusIdx,
|
|
67934
|
+
evidence: evidenceIdx >= 0 ? evidenceIdx : undefined
|
|
67935
|
+
};
|
|
67936
|
+
inTable = true;
|
|
67937
|
+
continue;
|
|
67938
|
+
}
|
|
67887
67939
|
}
|
|
67888
67940
|
}
|
|
67889
67941
|
if (/^[-:]+$/.test(cells[0] ?? ""))
|
|
67890
67942
|
continue;
|
|
67891
|
-
if (inTable && cells.length >= 2) {
|
|
67943
|
+
if (inTable && colMap && cells.length >= 2) {
|
|
67892
67944
|
const first = (cells[0] ?? "").toLowerCase();
|
|
67893
67945
|
const second = (cells[1] ?? "").toLowerCase();
|
|
67894
67946
|
if ((first === "ac" || first.includes("acceptance") || first === "check" || first === "name") && (second.includes("status") || second === "verdict")) {
|
|
67895
67947
|
inTable = false;
|
|
67948
|
+
colMap = null;
|
|
67896
67949
|
continue;
|
|
67897
67950
|
}
|
|
67898
|
-
const id = cells[
|
|
67899
|
-
const statusRaw = (cells[
|
|
67900
|
-
const evidence =
|
|
67951
|
+
const id = cells[colMap.id] ?? "";
|
|
67952
|
+
const statusRaw = (cells[colMap.status] ?? "").toUpperCase();
|
|
67953
|
+
const evidence = colMap.evidence !== undefined ? cells[colMap.evidence] ?? "" : "";
|
|
67901
67954
|
const status = normalizeStatus(statusRaw);
|
|
67902
67955
|
if (status !== null && id.length > 0) {
|
|
67903
67956
|
reqs.push({ id, status, evidence });
|
|
@@ -69062,24 +69115,46 @@ import { dirname as dirname12, isAbsolute as isAbsolute2, join as join15 } from
|
|
|
69062
69115
|
class AgentRunActionRunner {
|
|
69063
69116
|
observabilityBus;
|
|
69064
69117
|
steeringController;
|
|
69118
|
+
agentConfig;
|
|
69065
69119
|
kind = KIND;
|
|
69066
69120
|
agentService;
|
|
69067
|
-
constructor(agentService, observabilityBus, steeringController) {
|
|
69121
|
+
constructor(agentService, observabilityBus, steeringController, agentConfig = {}) {
|
|
69068
69122
|
this.observabilityBus = observabilityBus;
|
|
69069
69123
|
this.steeringController = steeringController;
|
|
69124
|
+
this.agentConfig = agentConfig;
|
|
69070
69125
|
this.agentService = agentService;
|
|
69071
69126
|
}
|
|
69072
69127
|
async execute(options, context4) {
|
|
69073
69128
|
const input = asOptionalString(options.input);
|
|
69074
69129
|
const agent = asOptionalString(options.agent);
|
|
69130
|
+
const dispatchAgent = agent === "inline" ? this.agentConfig.default ?? undefined : agent;
|
|
69075
69131
|
const model = asOptionalString(options.model);
|
|
69076
69132
|
const mode = asOptionalString(options.mode) ?? "text";
|
|
69077
69133
|
const cwd = asOptionalString(options.cwd) ?? context4.workdir ?? ".";
|
|
69134
|
+
const sessionAffinityVar = context4.vars.sessionAffinity;
|
|
69135
|
+
const affinityDisabled = sessionAffinityVar === "false" || typeof sessionAffinityVar === "boolean" && !sessionAffinityVar || options.sessionAffinity === false || this.agentConfig.sessionAffinity === false;
|
|
69136
|
+
const affinityOn = !affinityDisabled;
|
|
69137
|
+
const agentLabel = dispatchAgent ?? "<default>";
|
|
69138
|
+
const targetAgentDir = dispatchAgent ?? this.agentConfig.default ?? "omp";
|
|
69139
|
+
const prevAgent = asOptionalString(context4.vars.__agentSessionAgent);
|
|
69140
|
+
let sessionDir = asOptionalString(context4.vars.__agentSessionDir);
|
|
69141
|
+
if (affinityOn) {
|
|
69142
|
+
if (!sessionDir || prevAgent && prevAgent !== targetAgentDir) {
|
|
69143
|
+
sessionDir = join15(cwd, ".spur", "run", context4.runId, "agent-sessions", targetAgentDir);
|
|
69144
|
+
}
|
|
69145
|
+
} else {
|
|
69146
|
+
if (!sessionDir) {
|
|
69147
|
+
sessionDir = join15(cwd, ".spur", "run", context4.runId, "agent-sessions", targetAgentDir);
|
|
69148
|
+
}
|
|
69149
|
+
}
|
|
69150
|
+
const storedSessionId = asOptionalString(context4.vars.__agentSessionId);
|
|
69078
69151
|
let continueFlag = asOptionalBoolean(options.continue);
|
|
69079
69152
|
const latch = context4.vars.__agentSession;
|
|
69080
69153
|
const latchAutoContinued = continueFlag === undefined && latch === "open";
|
|
69081
69154
|
if (latchAutoContinued) {
|
|
69082
|
-
|
|
69155
|
+
if (!affinityOn) {
|
|
69156
|
+
continueFlag = true;
|
|
69157
|
+
}
|
|
69083
69158
|
}
|
|
69084
69159
|
if (input === undefined && !continueFlag) {
|
|
69085
69160
|
return {
|
|
@@ -69088,13 +69163,19 @@ class AgentRunActionRunner {
|
|
|
69088
69163
|
};
|
|
69089
69164
|
}
|
|
69090
69165
|
const flags = {};
|
|
69091
|
-
if (
|
|
69092
|
-
flags.agent =
|
|
69166
|
+
if (dispatchAgent !== undefined)
|
|
69167
|
+
flags.agent = dispatchAgent;
|
|
69093
69168
|
if (model !== undefined)
|
|
69094
69169
|
flags.model = model;
|
|
69095
69170
|
flags.mode = mode;
|
|
69096
69171
|
if (cwd !== "")
|
|
69097
69172
|
flags.cwd = cwd;
|
|
69173
|
+
if (sessionDir) {
|
|
69174
|
+
flags.sessionDir = sessionDir;
|
|
69175
|
+
if (affinityOn && storedSessionId) {
|
|
69176
|
+
flags.sessionId = storedSessionId;
|
|
69177
|
+
}
|
|
69178
|
+
}
|
|
69098
69179
|
const timeoutMs = asOptionalNumber(options.timeoutMs);
|
|
69099
69180
|
if (timeoutMs !== undefined && timeoutMs <= 0) {
|
|
69100
69181
|
return {
|
|
@@ -69110,7 +69191,6 @@ class AgentRunActionRunner {
|
|
|
69110
69191
|
const expectFile = asOptionalString(options.expectFile);
|
|
69111
69192
|
const requireDiff = asOptionalBoolean(options.requireDiff);
|
|
69112
69193
|
const capture = asOptionalBoolean(options.capture) || answerFile !== undefined;
|
|
69113
|
-
const agentLabel = agent ?? "<default>";
|
|
69114
69194
|
const observer = this.observabilityBus === undefined ? undefined : (event2) => {
|
|
69115
69195
|
this.observabilityBus?.emit("workflow.agent", event2);
|
|
69116
69196
|
};
|
|
@@ -69181,11 +69261,11 @@ class AgentRunActionRunner {
|
|
|
69181
69261
|
}
|
|
69182
69262
|
}
|
|
69183
69263
|
const stepLabel = context4.stateOrNodeId;
|
|
69184
|
-
if (ok && requireDiff === true && !await gitHasNonCorpusChanges(cwd)) {
|
|
69264
|
+
if (ok && requireDiff === true && !await gitHasNonCorpusChanges(cwd, this.agentConfig.excludeGlobs)) {
|
|
69185
69265
|
return {
|
|
69186
69266
|
ok: false,
|
|
69187
69267
|
data: buildResultData(exitCode, agentLabel, capture, answer, invocation),
|
|
69188
|
-
error: `agent.run '${stepLabel}' (${agentLabel}) exited 0 but produced zero non-corpus file changes \u2014 empty implement (no-op). The implement agent must change at least one file outside
|
|
69268
|
+
error: `agent.run '${stepLabel}' (${agentLabel}) exited 0 but produced zero non-corpus file changes \u2014 empty implement (no-op). The implement agent must change at least one file outside the configured task/feature folders; fix the implement input and re-run the pipeline.`
|
|
69189
69269
|
};
|
|
69190
69270
|
}
|
|
69191
69271
|
if (!ok) {
|
|
@@ -69193,18 +69273,71 @@ class AgentRunActionRunner {
|
|
|
69193
69273
|
}
|
|
69194
69274
|
const partialWorkHint = `partial work (if any) preserved at .spur/run/${context4.runId}-${stepLabel}-partial.md; resume from that tree per the timed-out-implement runbook (plugins/sp/skills/spur-dev/references/execution-workflow.md)`;
|
|
69195
69275
|
const error51 = ok ? undefined : traced.signal !== undefined ? timeoutMs !== undefined ? `agent.run '${stepLabel}' (${agentLabel}) terminated by signal ${traced.signal} (configured timeout: ${timeoutMs}ms; timeout or cancellation); ${partialWorkHint}` : `agent.run '${stepLabel}' (${agentLabel}) was cancelled by signal ${traced.signal}; ${partialWorkHint}` : traced.message !== undefined ? `agent.run '${stepLabel}' (${agentLabel}) dispatch failed: ${traced.message}` : `agent.run '${stepLabel}' (${agentLabel}) exited with code ${exitCode}; ${partialWorkHint}`;
|
|
69276
|
+
const resolvedAgent = invocation?.agent ?? targetAgentDir;
|
|
69277
|
+
let resolvedSessionDir = sessionDir;
|
|
69278
|
+
if (ok && affinityOn && resolvedAgent !== targetAgentDir && !context4.vars.__agentSessionDir) {
|
|
69279
|
+
resolvedSessionDir = join15(cwd, ".spur", "run", context4.runId, "agent-sessions", resolvedAgent);
|
|
69280
|
+
}
|
|
69281
|
+
let discoveredSessionId = storedSessionId;
|
|
69282
|
+
if (ok && affinityOn && resolvedSessionDir && !discoveredSessionId) {
|
|
69283
|
+
discoveredSessionId = await discoverSessionId(resolvedSessionDir);
|
|
69284
|
+
}
|
|
69285
|
+
if (ok && affinityOn && resolvedSessionDir) {
|
|
69286
|
+
try {
|
|
69287
|
+
const sidecarPath = join15(cwd, ".spur", "run", `${context4.runId}-agent-session.json`);
|
|
69288
|
+
const fs3 = createNodeFileSystem3(cwd);
|
|
69289
|
+
await fs3.ensureDir(dirname12(sidecarPath));
|
|
69290
|
+
await fs3.writeFile(sidecarPath, JSON.stringify({
|
|
69291
|
+
agent: resolvedAgent,
|
|
69292
|
+
sessionId: discoveredSessionId ?? null,
|
|
69293
|
+
sessionDir: resolvedSessionDir,
|
|
69294
|
+
openedAt: new Date().toISOString()
|
|
69295
|
+
}, null, 2));
|
|
69296
|
+
} catch {}
|
|
69297
|
+
}
|
|
69196
69298
|
return {
|
|
69197
69299
|
ok,
|
|
69198
69300
|
data: buildResultData(exitCode, agentLabel, capture, answer, invocation),
|
|
69199
69301
|
error: error51,
|
|
69200
69302
|
setVars: ok ? {
|
|
69201
69303
|
__agentSession: resumeRetried ? "no-resume" : "open",
|
|
69304
|
+
...affinityOn && resolvedSessionDir ? { __agentSessionDir: resolvedSessionDir } : {},
|
|
69305
|
+
...affinityOn && (discoveredSessionId || storedSessionId) ? { __agentSessionId: discoveredSessionId || storedSessionId } : {},
|
|
69306
|
+
...affinityOn ? { __agentSessionAgent: resolvedAgent } : {},
|
|
69202
69307
|
...steeringNote !== undefined ? { __steeringNote: steeringNote } : {}
|
|
69203
69308
|
} : undefined
|
|
69204
69309
|
};
|
|
69205
69310
|
} finally {}
|
|
69206
69311
|
}
|
|
69207
69312
|
}
|
|
69313
|
+
async function discoverSessionId(sessionDir) {
|
|
69314
|
+
try {
|
|
69315
|
+
const fs3 = createNodeFileSystem3();
|
|
69316
|
+
if (!await fs3.exists(sessionDir))
|
|
69317
|
+
return;
|
|
69318
|
+
const entries = await fs3.readDir(sessionDir);
|
|
69319
|
+
if (entries.length === 0)
|
|
69320
|
+
return;
|
|
69321
|
+
const jsonEntries = entries.filter((e) => e.toLowerCase().endsWith(".json"));
|
|
69322
|
+
if (jsonEntries.length === 0)
|
|
69323
|
+
return;
|
|
69324
|
+
let newestFile;
|
|
69325
|
+
let newestMtime = 0;
|
|
69326
|
+
for (const entry of jsonEntries) {
|
|
69327
|
+
const fullPath = join15(sessionDir, entry);
|
|
69328
|
+
const st = await fs3.stat(fullPath);
|
|
69329
|
+
if (st?.isFile() && st.mtimeMs > newestMtime) {
|
|
69330
|
+
newestMtime = st.mtimeMs;
|
|
69331
|
+
newestFile = entry;
|
|
69332
|
+
}
|
|
69333
|
+
}
|
|
69334
|
+
if (!newestFile)
|
|
69335
|
+
return;
|
|
69336
|
+
return newestFile.replace(/\.json$/i, "");
|
|
69337
|
+
} catch {
|
|
69338
|
+
return;
|
|
69339
|
+
}
|
|
69340
|
+
}
|
|
69208
69341
|
function buildResultData(exitCode, agentLabel, capture, answer, invocation) {
|
|
69209
69342
|
const data = { exitCode, agent: agentLabel };
|
|
69210
69343
|
if (capture)
|
|
@@ -69309,11 +69442,12 @@ async function gitDiffStat(cwd) {
|
|
|
69309
69442
|
return "";
|
|
69310
69443
|
}
|
|
69311
69444
|
}
|
|
69312
|
-
async function gitHasNonCorpusChanges(cwd) {
|
|
69445
|
+
async function gitHasNonCorpusChanges(cwd, excludeGlobs = ["docs/tasks3/*", "docs/features/*"]) {
|
|
69313
69446
|
try {
|
|
69447
|
+
const excludes = excludeGlobs.map((g) => `:(exclude)${g}`);
|
|
69314
69448
|
const result = await new NodeProcessExecutor3().run({
|
|
69315
69449
|
command: "git",
|
|
69316
|
-
args: ["status", "--porcelain", "--", ".",
|
|
69450
|
+
args: ["status", "--porcelain", "--", ".", ...excludes],
|
|
69317
69451
|
cwd,
|
|
69318
69452
|
maxOutput: 1024 * 1024,
|
|
69319
69453
|
forceBuffered: true,
|
|
@@ -70028,7 +70162,7 @@ var KIND12 = "shell";
|
|
|
70028
70162
|
// ../../packages/app/src/workflow/builtins.ts
|
|
70029
70163
|
function registerSpurBuiltins(host, options) {
|
|
70030
70164
|
const fileSystem = options.fileSystem ?? createNodeFileSystem3();
|
|
70031
|
-
host.registerAction(new AgentRunActionRunner(options.agentService, options.observabilityBus, options.steeringController), "builtin");
|
|
70165
|
+
host.registerAction(new AgentRunActionRunner(options.agentService, options.observabilityBus, options.steeringController, options.agentConfig), "builtin");
|
|
70032
70166
|
host.registerAction(new StreamingShellActionRunner(options.processExecutor ?? new NodeProcessExecutor3, options.observabilityBus), "builtin");
|
|
70033
70167
|
host.registerGuard(new EnvShellGuardRunner(options.processExecutor ?? new NodeProcessExecutor3), "builtin");
|
|
70034
70168
|
host.registerAction(new RuleCheckActionRunner(options.ruleService), "builtin");
|
|
@@ -70138,6 +70272,30 @@ class WorkflowAppService {
|
|
|
70138
70272
|
validateSchema: opts.validateSchema !== false,
|
|
70139
70273
|
...embedded !== undefined ? embedded : {}
|
|
70140
70274
|
});
|
|
70275
|
+
const shellErrors = [];
|
|
70276
|
+
const commands = collectShellCommands(workflow);
|
|
70277
|
+
const executor = new NodeProcessExecutor3;
|
|
70278
|
+
for (const { stateId, kind, index: index2, command } of commands) {
|
|
70279
|
+
if (!command || command.trim().length === 0)
|
|
70280
|
+
continue;
|
|
70281
|
+
try {
|
|
70282
|
+
const result = await executor.run({
|
|
70283
|
+
command: "sh",
|
|
70284
|
+
args: ["-n", "-c", command],
|
|
70285
|
+
rejectOnError: false
|
|
70286
|
+
});
|
|
70287
|
+
if (result.exitCode !== 0) {
|
|
70288
|
+
const stderr = (result.stderr ?? "").trim();
|
|
70289
|
+
const location = stateId ? `${stateId}/${kind}[${index2}]` : `${kind}[${index2}]`;
|
|
70290
|
+
shellErrors.push(`Shell syntax error at ${location}: ${stderr || "non-zero exit"}`);
|
|
70291
|
+
}
|
|
70292
|
+
} catch {
|
|
70293
|
+
shellErrors.push(`Shell syntax check failed at ${stateId}/${kind}[${index2}]: process error`);
|
|
70294
|
+
}
|
|
70295
|
+
}
|
|
70296
|
+
if (shellErrors.length > 0) {
|
|
70297
|
+
return { ok: false, valid: false, file: file2, errors: shellErrors };
|
|
70298
|
+
}
|
|
70141
70299
|
return { ok: true, valid: true, workflow };
|
|
70142
70300
|
} catch (error51) {
|
|
70143
70301
|
return {
|
|
@@ -70440,6 +70598,23 @@ class WorkflowAppService {
|
|
|
70440
70598
|
const processExec = this.ctx.processExecutor?.();
|
|
70441
70599
|
const host = createDefaultWorkflowEngineHost(processExec !== undefined ? { processExecutor: processExec } : {});
|
|
70442
70600
|
const bus = this.ctx.observabilityBus?.();
|
|
70601
|
+
let agentSlice = {};
|
|
70602
|
+
try {
|
|
70603
|
+
const agent = (await loadSpurConfig(this.ctx.cwd)).agent;
|
|
70604
|
+
agentSlice = {
|
|
70605
|
+
...agent?.default !== undefined ? { default: agent.default } : {},
|
|
70606
|
+
...agent?.sessionAffinity !== undefined ? { sessionAffinity: agent.sessionAffinity } : {}
|
|
70607
|
+
};
|
|
70608
|
+
} catch {}
|
|
70609
|
+
try {
|
|
70610
|
+
const fs3 = createNodeFileSystem3(this.ctx.cwd);
|
|
70611
|
+
const { foldersConfig, featuresDir } = await resolvePlanningFolders(fs3);
|
|
70612
|
+
const folderGlobs = Object.keys(foldersConfig.folders).map((k) => `${k}/*`);
|
|
70613
|
+
agentSlice = {
|
|
70614
|
+
...agentSlice,
|
|
70615
|
+
excludeGlobs: [...folderGlobs, `${featuresDir}/*`]
|
|
70616
|
+
};
|
|
70617
|
+
} catch {}
|
|
70443
70618
|
registerSpurBuiltins(host, {
|
|
70444
70619
|
agentService: this.ctx.agentService(),
|
|
70445
70620
|
ruleService: this.ctx.ruleService(),
|
|
@@ -70448,7 +70623,8 @@ class WorkflowAppService {
|
|
|
70448
70623
|
hostAllowlist: this.ctx.hostAllowlist?.(),
|
|
70449
70624
|
...bus !== undefined ? { observabilityBus: bus } : {},
|
|
70450
70625
|
...processExec !== undefined ? { processExecutor: processExec } : {},
|
|
70451
|
-
...opts.steeringController !== undefined ? { steeringController: opts.steeringController } : {}
|
|
70626
|
+
...opts.steeringController !== undefined ? { steeringController: opts.steeringController } : {},
|
|
70627
|
+
agentConfig: agentSlice
|
|
70452
70628
|
});
|
|
70453
70629
|
const db2 = await this.ctx.getDb();
|
|
70454
70630
|
let persistence2 = new DbWorkflowPersistenceAdapter(db2);
|
|
@@ -70459,6 +70635,55 @@ class WorkflowAppService {
|
|
|
70459
70635
|
return new WorkflowService(host, adapter);
|
|
70460
70636
|
}
|
|
70461
70637
|
}
|
|
70638
|
+
function collectShellCommands(def) {
|
|
70639
|
+
const entries = [];
|
|
70640
|
+
const visitAction = (stateId, action, idx) => {
|
|
70641
|
+
if (action.kind === "shell") {
|
|
70642
|
+
const cmd = action.options?.command;
|
|
70643
|
+
if (typeof cmd === "string" && cmd.length > 0) {
|
|
70644
|
+
entries.push({ stateId, kind: "action", index: idx, command: cmd });
|
|
70645
|
+
}
|
|
70646
|
+
}
|
|
70647
|
+
};
|
|
70648
|
+
const visitGuard = (stateId, guard) => {
|
|
70649
|
+
if (guard.kind === "shell") {
|
|
70650
|
+
const cmd = guard.options?.command;
|
|
70651
|
+
if (typeof cmd === "string" && cmd.length > 0) {
|
|
70652
|
+
entries.push({ stateId, kind: "guard", index: 0, command: cmd });
|
|
70653
|
+
}
|
|
70654
|
+
}
|
|
70655
|
+
};
|
|
70656
|
+
if (def.kind === "transition-flow" || def.kind === undefined) {
|
|
70657
|
+
const flowDef = def;
|
|
70658
|
+
for (const node of flowDef.nodes ?? []) {
|
|
70659
|
+
if (node.action)
|
|
70660
|
+
visitAction(node.id, node.action, 0);
|
|
70661
|
+
}
|
|
70662
|
+
for (const edge of flowDef.edges ?? []) {
|
|
70663
|
+
if (edge.condition)
|
|
70664
|
+
visitGuard(edge.from, edge.condition);
|
|
70665
|
+
}
|
|
70666
|
+
} else {
|
|
70667
|
+
const smDef = def;
|
|
70668
|
+
for (const state of smDef.states ?? []) {
|
|
70669
|
+
if (state.onEnter) {
|
|
70670
|
+
state.onEnter.forEach((action, i2) => {
|
|
70671
|
+
visitAction(state.id, action, i2);
|
|
70672
|
+
});
|
|
70673
|
+
}
|
|
70674
|
+
if (state.onExit) {
|
|
70675
|
+
state.onExit.forEach((action, i2) => {
|
|
70676
|
+
visitAction(state.id, action, i2);
|
|
70677
|
+
});
|
|
70678
|
+
}
|
|
70679
|
+
}
|
|
70680
|
+
for (const trans of smDef.transitions ?? []) {
|
|
70681
|
+
if (trans.guard)
|
|
70682
|
+
visitGuard(`${trans.from}\u2192${trans.to}`, trans.guard);
|
|
70683
|
+
}
|
|
70684
|
+
}
|
|
70685
|
+
return entries;
|
|
70686
|
+
}
|
|
70462
70687
|
async function fileExists(path9) {
|
|
70463
70688
|
const fs3 = createNodeFileSystem3();
|
|
70464
70689
|
return await fs3.exists(path9);
|
|
@@ -71030,19 +71255,19 @@ var {
|
|
|
71030
71255
|
init_src();
|
|
71031
71256
|
init_loader();
|
|
71032
71257
|
|
|
71033
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
71258
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/application-node.js
|
|
71034
71259
|
init_dist4();
|
|
71035
71260
|
init_dist5();
|
|
71036
71261
|
import { appendFileSync as appendFileSync4, mkdirSync as mkdirSync3, readFileSync as readFileSync5 } from "fs";
|
|
71037
71262
|
import { dirname as dirname5 } from "path";
|
|
71038
71263
|
|
|
71039
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
71264
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/application/index.js
|
|
71040
71265
|
init_default_observers();
|
|
71041
71266
|
init_event_bus();
|
|
71042
71267
|
init_file_observer();
|
|
71043
71268
|
init_logger3();
|
|
71044
71269
|
|
|
71045
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
71270
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/scheduler/noop.js
|
|
71046
71271
|
class NoopSchedulerAdapter {
|
|
71047
71272
|
constructor() {}
|
|
71048
71273
|
register(_cron, _action) {}
|
|
@@ -71050,7 +71275,7 @@ class NoopSchedulerAdapter {
|
|
|
71050
71275
|
async stop() {}
|
|
71051
71276
|
}
|
|
71052
71277
|
|
|
71053
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
71278
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/scheduler/factory.js
|
|
71054
71279
|
function initScheduler(adapter, cronEntries) {
|
|
71055
71280
|
const resolved = adapter ?? new NoopSchedulerAdapter;
|
|
71056
71281
|
if (cronEntries) {
|
|
@@ -71061,7 +71286,7 @@ function initScheduler(adapter, cronEntries) {
|
|
|
71061
71286
|
return resolved;
|
|
71062
71287
|
}
|
|
71063
71288
|
|
|
71064
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
71289
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/application/plugins/builtins.js
|
|
71065
71290
|
init_logger3();
|
|
71066
71291
|
init_metrics();
|
|
71067
71292
|
init_sdk();
|
|
@@ -71154,7 +71379,7 @@ function dbPlugin(db2) {
|
|
|
71154
71379
|
};
|
|
71155
71380
|
}
|
|
71156
71381
|
|
|
71157
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
71382
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/application/plugins/host.js
|
|
71158
71383
|
init_logger3();
|
|
71159
71384
|
|
|
71160
71385
|
class PluginHost {
|
|
@@ -71242,7 +71467,7 @@ class PluginHost {
|
|
|
71242
71467
|
}
|
|
71243
71468
|
}
|
|
71244
71469
|
|
|
71245
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
71470
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/application/index.js
|
|
71246
71471
|
async function performShutdown(state, reason) {
|
|
71247
71472
|
if (state.stopped)
|
|
71248
71473
|
return;
|
|
@@ -71353,10 +71578,10 @@ async function runApplication(options) {
|
|
|
71353
71578
|
}
|
|
71354
71579
|
}
|
|
71355
71580
|
|
|
71356
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
71581
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/application-node.js
|
|
71357
71582
|
init_scheduler_node();
|
|
71358
71583
|
|
|
71359
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
71584
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/telemetry/otel-node.js
|
|
71360
71585
|
var import_api14 = __toESM(require_src(), 1);
|
|
71361
71586
|
|
|
71362
71587
|
// ../../node_modules/.bun/@opentelemetry+exporter-metrics-otlp-http@0.218.0+e40b0dfdd726a224/node_modules/@opentelemetry/exporter-metrics-otlp-http/build/esm/OTLPMetricExporterBase.js
|
|
@@ -74372,7 +74597,7 @@ class OTLPTraceExporter extends import_otlp_exporter_base2.OTLPExporterBase {
|
|
|
74372
74597
|
}), JsonTraceSerializer));
|
|
74373
74598
|
}
|
|
74374
74599
|
}
|
|
74375
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
74600
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/telemetry/otel-node.js
|
|
74376
74601
|
var import_resources2 = __toESM(require_src4(), 1);
|
|
74377
74602
|
var import_sdk_trace_node = __toESM(require_src8(), 1);
|
|
74378
74603
|
var import_semantic_conventions = __toESM(require_src2(), 1);
|
|
@@ -74423,7 +74648,7 @@ async function shutdownNodeTelemetry() {
|
|
|
74423
74648
|
await Promise.all(pending);
|
|
74424
74649
|
}
|
|
74425
74650
|
|
|
74426
|
-
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.
|
|
74651
|
+
// ../../node_modules/.bun/@gobing-ai+ts-infra@0.4.19+79868827d1ab596b/node_modules/@gobing-ai/ts-infra/dist/application-node.js
|
|
74427
74652
|
class ConfigValidationError extends Error {
|
|
74428
74653
|
constructor(message) {
|
|
74429
74654
|
super(message);
|
|
@@ -78849,6 +79074,9 @@ function registerFeatureCommand(program2, context4) {
|
|
|
78849
79074
|
const resolved = await resolvePlanningFolders(context4.fs);
|
|
78850
79075
|
const featuresDir = options.folder ?? context4.fs.resolve(resolved.featuresDir);
|
|
78851
79076
|
const tasksDir = context4.fs.resolve(resolved.tasksDir);
|
|
79077
|
+
const tasksDirs = Object.keys(resolved.foldersConfig.folders).map((p) => context4.fs.resolve(p));
|
|
79078
|
+
if (!tasksDirs.includes(tasksDir))
|
|
79079
|
+
tasksDirs.unshift(tasksDir);
|
|
78852
79080
|
const svc = new FeatureCheckService(context4.fs);
|
|
78853
79081
|
const json3 = options.json === true;
|
|
78854
79082
|
const strict = options.strict === true;
|
|
@@ -78867,6 +79095,7 @@ function registerFeatureCommand(program2, context4) {
|
|
|
78867
79095
|
strict,
|
|
78868
79096
|
featuresDir,
|
|
78869
79097
|
tasksDir,
|
|
79098
|
+
tasksDirs,
|
|
78870
79099
|
runDir: context4.fs.resolve(".spur/run"),
|
|
78871
79100
|
severityOverrides: resolved.severityOverrides,
|
|
78872
79101
|
asStatus: options.as
|
|
@@ -78962,6 +79191,9 @@ async function assertFeatureCheckPass(context4, id, folderOverride, strict, asSt
|
|
|
78962
79191
|
const resolved = await resolvePlanningFolders(context4.fs);
|
|
78963
79192
|
const featuresDir = folderOverride ?? context4.fs.resolve(resolved.featuresDir);
|
|
78964
79193
|
const tasksDir = context4.fs.resolve(resolved.tasksDir);
|
|
79194
|
+
const tasksDirs = Object.keys(resolved.foldersConfig.folders).map((p) => context4.fs.resolve(p));
|
|
79195
|
+
if (!tasksDirs.includes(tasksDir))
|
|
79196
|
+
tasksDirs.unshift(tasksDir);
|
|
78965
79197
|
const entries = await context4.fs.readDir(featuresDir);
|
|
78966
79198
|
const fileName = entries.find((name) => name.match(new RegExp(`^${id}_.+\\.md$`)));
|
|
78967
79199
|
if (fileName === undefined) {
|
|
@@ -78971,6 +79203,7 @@ async function assertFeatureCheckPass(context4, id, folderOverride, strict, asSt
|
|
|
78971
79203
|
strict,
|
|
78972
79204
|
featuresDir,
|
|
78973
79205
|
tasksDir,
|
|
79206
|
+
tasksDirs,
|
|
78974
79207
|
asStatus
|
|
78975
79208
|
});
|
|
78976
79209
|
if (!result.pass) {
|
|
@@ -79001,9 +79234,13 @@ function registerHistoryCommand(program2, context4) {
|
|
|
79001
79234
|
const summary = await svc.analyze(options.since || undefined);
|
|
79002
79235
|
context4.output.write(options.json ? toJson2(summary) : formatSummary(summary));
|
|
79003
79236
|
});
|
|
79004
|
-
noun.command("report").description("Reserved richer report surface;
|
|
79005
|
-
const message =
|
|
79006
|
-
|
|
79237
|
+
noun.command("report").description("Reserved richer report surface; not yet implemented (see docs/04_DESIGN.md \xA7spur history report).").option("--json", "Output machine-readable JSON where supported").action(async (options) => {
|
|
79238
|
+
const message = `spur history report is reserved but not yet implemented (P8).
|
|
79239
|
+
` + `See docs/04_DESIGN.md for the planned surface.
|
|
79240
|
+
` + `Workaround: use "spur history analyze" for aggregate summaries, or
|
|
79241
|
+
` + '"spur history import" to load session data, then query the database directly.';
|
|
79242
|
+
context4.output.write(options.json ? toJson2({ status: "not-implemented", message }) : message);
|
|
79243
|
+
context4.setExitCode(0);
|
|
79007
79244
|
});
|
|
79008
79245
|
}
|
|
79009
79246
|
function formatImportResult(r) {
|
|
@@ -79031,7 +79268,7 @@ import { join as join19, resolve as resolve6 } from "path";
|
|
|
79031
79268
|
var CLI_CONFIG = {
|
|
79032
79269
|
binaryName: "spur",
|
|
79033
79270
|
binaryLabel: "spur",
|
|
79034
|
-
binaryVersion: "0.3.
|
|
79271
|
+
binaryVersion: "0.3.34",
|
|
79035
79272
|
configDir: ".spur",
|
|
79036
79273
|
configFile: ".spur/config.yaml",
|
|
79037
79274
|
databaseFile: ".spur/spur.db"
|
|
@@ -85998,7 +86235,9 @@ function createFeatureHandlers(ctx) {
|
|
|
85998
86235
|
}),
|
|
85999
86236
|
sync: os2.feature.sync.handler(async ({ input }) => {
|
|
86000
86237
|
if (input.direction === "push") {
|
|
86001
|
-
throw new
|
|
86238
|
+
throw new HTTPException(501, {
|
|
86239
|
+
message: "Push sync (feature->tasks cascade) is not implemented; use the pull direction or spur feature sync CLI"
|
|
86240
|
+
});
|
|
86002
86241
|
}
|
|
86003
86242
|
const svc = ctx.featureService();
|
|
86004
86243
|
const res = await svc.syncFeature(input.id);
|
|
@@ -89702,7 +89941,7 @@ var spur_config_schema_default = {
|
|
|
89702
89941
|
},
|
|
89703
89942
|
executors: {
|
|
89704
89943
|
type: "array",
|
|
89705
|
-
description: "Named executor profiles: each pairs a canonical agent with an optional model override. Referenced by name from `default` and
|
|
89944
|
+
description: "Named executor profiles: each pairs a canonical agent with an optional model override. Referenced by name from `agent.default` and stage model_policy (default-by-phase removed 0452).",
|
|
89706
89945
|
items: {
|
|
89707
89946
|
type: "object",
|
|
89708
89947
|
required: ["name", "agent"],
|
|
@@ -89730,13 +89969,6 @@ var spur_config_schema_default = {
|
|
|
89730
89969
|
}
|
|
89731
89970
|
}
|
|
89732
89971
|
},
|
|
89733
|
-
"default-by-phase": {
|
|
89734
|
-
type: "object",
|
|
89735
|
-
description: "DEPRECATED (ADR-033). Backward-compat map of dev phase (e.g. dev-run, dev-review) to executor selector. Prefer executor `tier` + stage-registry model_policy. When present, a matching phase mapping is still authoritative (fail-fast; no fall back to `default`) and shadows stage routing for that phase.",
|
|
89736
|
-
additionalProperties: {
|
|
89737
|
-
type: "string"
|
|
89738
|
-
}
|
|
89739
|
-
},
|
|
89740
89972
|
team: {
|
|
89741
89973
|
type: "object",
|
|
89742
89974
|
description: "Declarative agent teams keyed by team id (the map key is the teamId). Each team materializes a roster of agent specs (feature M). Mirrors @gobing-ai/spur-config TeamConfigSchema (Zod is SSOT).",
|
|
@@ -89764,7 +89996,10 @@ var spur_config_schema_default = {
|
|
|
89764
89996
|
description: "Roster of member references (>= 1). A bare string is shorthand for { executor: <string> }; the composed agent id is <teamId>-<id ?? executor>.",
|
|
89765
89997
|
items: {
|
|
89766
89998
|
oneOf: [
|
|
89767
|
-
{
|
|
89999
|
+
{
|
|
90000
|
+
type: "string",
|
|
90001
|
+
minLength: 1
|
|
90002
|
+
},
|
|
89768
90003
|
{
|
|
89769
90004
|
type: "object",
|
|
89770
90005
|
required: ["executor"],
|
|
@@ -89779,20 +90014,34 @@ var spur_config_schema_default = {
|
|
|
89779
90014
|
minLength: 1,
|
|
89780
90015
|
description: "Local member id; composed id is <teamId>-<id ?? executor> (must match ^[a-z][a-z0-9_-]{1,63}$)."
|
|
89781
90016
|
},
|
|
89782
|
-
purpose: {
|
|
90017
|
+
purpose: {
|
|
90018
|
+
type: "string"
|
|
90019
|
+
},
|
|
89783
90020
|
workspace: {
|
|
89784
90021
|
type: "string",
|
|
89785
90022
|
minLength: 1,
|
|
89786
90023
|
description: "Per-member workspace override. A leading `~` is tilde-expanded at load."
|
|
89787
90024
|
},
|
|
89788
|
-
model: {
|
|
89789
|
-
|
|
89790
|
-
|
|
90025
|
+
model: {
|
|
90026
|
+
type: "string",
|
|
90027
|
+
minLength: 1
|
|
90028
|
+
},
|
|
90029
|
+
autonomy: {
|
|
90030
|
+
type: "string"
|
|
90031
|
+
},
|
|
90032
|
+
systemPrompt: {
|
|
90033
|
+
type: "string"
|
|
90034
|
+
},
|
|
89791
90035
|
command: {
|
|
89792
90036
|
type: "array",
|
|
89793
|
-
items: {
|
|
90037
|
+
items: {
|
|
90038
|
+
type: "string",
|
|
90039
|
+
minLength: 1
|
|
90040
|
+
}
|
|
89794
90041
|
},
|
|
89795
|
-
autostart: {
|
|
90042
|
+
autostart: {
|
|
90043
|
+
type: "boolean"
|
|
90044
|
+
}
|
|
89796
90045
|
}
|
|
89797
90046
|
}
|
|
89798
90047
|
]
|
|
@@ -89808,7 +90057,9 @@ var spur_config_schema_default = {
|
|
|
89808
90057
|
properties: {
|
|
89809
90058
|
paths: {
|
|
89810
90059
|
type: "array",
|
|
89811
|
-
items: {
|
|
90060
|
+
items: {
|
|
90061
|
+
type: "string"
|
|
90062
|
+
},
|
|
89812
90063
|
description: "Glob paths to rule files."
|
|
89813
90064
|
}
|
|
89814
90065
|
}
|
|
@@ -89818,7 +90069,9 @@ var spur_config_schema_default = {
|
|
|
89818
90069
|
properties: {
|
|
89819
90070
|
paths: {
|
|
89820
90071
|
type: "array",
|
|
89821
|
-
items: {
|
|
90072
|
+
items: {
|
|
90073
|
+
type: "string"
|
|
90074
|
+
},
|
|
89822
90075
|
description: "Glob paths to workflow directories."
|
|
89823
90076
|
}
|
|
89824
90077
|
}
|