crewly 1.20.187 → 1.20.189
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/skills/agent/core/project-tickets/SKILL.md +3 -2
- package/config/skills/agent/core/project-tickets/execute.sh +4 -4
- package/config/skills/agent/core/project-tickets/execute.test.sh +2 -2
- package/dist/backend/backend/src/constants.d.ts +70 -12
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +70 -12
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +5 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js +1 -1
- package/dist/backend/backend/src/controllers/system/usage.controller.d.ts +46 -0
- package/dist/backend/backend/src/controllers/system/usage.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/system/usage.controller.js +181 -0
- package/dist/backend/backend/src/controllers/system/usage.controller.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts +7 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +59 -4
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.js +3 -3
- package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
- package/dist/backend/backend/src/scripts/repair-orphan-superseded-decisions.d.ts +56 -0
- package/dist/backend/backend/src/scripts/repair-orphan-superseded-decisions.d.ts.map +1 -0
- package/dist/backend/backend/src/scripts/repair-orphan-superseded-decisions.js +114 -0
- package/dist/backend/backend/src/scripts/repair-orphan-superseded-decisions.js.map +1 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +7 -7
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/project-memory.service.js +21 -10
- package/dist/backend/backend/src/services/memory/project-memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts +4 -2
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js +6 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +2 -2
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +4 -2
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/antigravity-usage-sync.service.d.ts +130 -0
- package/dist/backend/backend/src/services/monitoring/antigravity-usage-sync.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/antigravity-usage-sync.service.js +274 -0
- package/dist/backend/backend/src/services/monitoring/antigravity-usage-sync.service.js.map +1 -0
- package/dist/backend/backend/src/services/monitoring/codex-rollout-sync.service.d.ts +152 -0
- package/dist/backend/backend/src/services/monitoring/codex-rollout-sync.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/codex-rollout-sync.service.js +311 -0
- package/dist/backend/backend/src/services/monitoring/codex-rollout-sync.service.js.map +1 -0
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +53 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js +51 -3
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts +4 -4
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.d.ts +4 -3
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.js +7 -4
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts +40 -9
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js +68 -20
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap-command.d.ts +48 -18
- package/dist/backend/backend/src/services/spend/spend-cap-command.d.ts.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap-command.js +195 -62
- package/dist/backend/backend/src/services/spend/spend-cap-command.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.gate.d.ts +11 -15
- package/dist/backend/backend/src/services/spend/spend-cap.gate.d.ts.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.gate.js +8 -13
- package/dist/backend/backend/src/services/spend/spend-cap.gate.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts +179 -64
- package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.js +406 -149
- package/dist/backend/backend/src/services/spend/spend-cap.service.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.store.d.ts +52 -11
- package/dist/backend/backend/src/services/spend/spend-cap.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.store.js +67 -21
- package/dist/backend/backend/src/services/spend/spend-cap.store.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.wiring.d.ts +3 -1
- package/dist/backend/backend/src/services/spend/spend-cap.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.wiring.js +21 -7
- package/dist/backend/backend/src/services/spend/spend-cap.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-ledger.service.d.ts +57 -36
- package/dist/backend/backend/src/services/spend/spend-ledger.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-ledger.service.js +80 -55
- package/dist/backend/backend/src/services/spend/spend-ledger.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/work-item-usage.d.ts +10 -1
- package/dist/backend/backend/src/services/task-pool/work-item-usage.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/work-item-usage.js +2 -0
- package/dist/backend/backend/src/services/task-pool/work-item-usage.js.map +1 -1
- package/dist/backend/backend/src/services/usage/token-format.d.ts +49 -0
- package/dist/backend/backend/src/services/usage/token-format.d.ts.map +1 -0
- package/dist/backend/backend/src/services/usage/token-format.js +81 -0
- package/dist/backend/backend/src/services/usage/token-format.js.map +1 -0
- package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts +132 -0
- package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/usage/usage-stats.service.js +226 -0
- package/dist/backend/backend/src/services/usage/usage-stats.service.js.map +1 -0
- package/dist/backend/backend/src/types/decision.types.d.ts +2 -2
- package/dist/backend/backend/src/types/ticket-autopilot.types.d.ts +24 -7
- package/dist/backend/backend/src/types/ticket-autopilot.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/ticket-autopilot.types.js +29 -13
- package/dist/backend/backend/src/types/ticket-autopilot.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +70 -12
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +70 -12
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +7 -7
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/project-memory.service.js +21 -10
- package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts +4 -2
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js +6 -1
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js +2 -2
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js +4 -2
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +53 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js +51 -3
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/cli/backend/src/services/spend/spend-cap.gate.d.ts +11 -15
- package/dist/cli/backend/src/services/spend/spend-cap.gate.d.ts.map +1 -1
- package/dist/cli/backend/src/services/spend/spend-cap.gate.js +8 -13
- package/dist/cli/backend/src/services/spend/spend-cap.gate.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/work-item-usage.d.ts +10 -1
- package/dist/cli/backend/src/services/task-pool/work-item-usage.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/work-item-usage.js +2 -0
- package/dist/cli/backend/src/services/task-pool/work-item-usage.js.map +1 -1
- package/dist/cli/backend/src/services/usage/token-format.d.ts +49 -0
- package/dist/cli/backend/src/services/usage/token-format.d.ts.map +1 -0
- package/dist/cli/backend/src/services/usage/token-format.js +81 -0
- package/dist/cli/backend/src/services/usage/token-format.js.map +1 -0
- package/dist/cli/backend/src/types/decision.types.d.ts +2 -2
- package/dist/cli/backend/src/types/ticket-autopilot.types.d.ts +24 -7
- package/dist/cli/backend/src/types/ticket-autopilot.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/ticket-autopilot.types.js +29 -13
- package/dist/cli/backend/src/types/ticket-autopilot.types.js.map +1 -1
- package/frontend/dist/assets/{index-15c2faf2.js → index-49f50b45.js} +276 -276
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/backend/backend/src/controllers/system/spend.controller.d.ts +0 -32
- package/dist/backend/backend/src/controllers/system/spend.controller.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/system/spend.controller.js +0 -100
- package/dist/backend/backend/src/controllers/system/spend.controller.js.map +0 -1
|
@@ -3,7 +3,7 @@ import { registerSystemControlRoutes } from '../../controllers/system/system-con
|
|
|
3
3
|
import { getOwnerMessageWatchdog } from '../../services/messaging/owner-message-watchdog.service.js';
|
|
4
4
|
import { registerRuntimeFallbackRoutes } from '../../controllers/system/runtime-fallback.controller.js';
|
|
5
5
|
import { registerRuntimeTermsRoutes } from '../../controllers/system/runtime-terms.controller.js';
|
|
6
|
-
import {
|
|
6
|
+
import { registerUsageRoutes } from '../../controllers/system/usage.controller.js';
|
|
7
7
|
export function registerSystemRoutes(router, apiController) {
|
|
8
8
|
// System Administration Routes
|
|
9
9
|
router.get('/system/health', (req, res) => systemHandlers.getSystemHealth.call(apiController, req, res));
|
|
@@ -27,8 +27,8 @@ export function registerSystemRoutes(router, apiController) {
|
|
|
27
27
|
registerRuntimeFallbackRoutes(router);
|
|
28
28
|
// Owner consent for a runtime's first-run Terms (specs/2026-10-01-runtime-terms-consent.md)
|
|
29
29
|
registerRuntimeTermsRoutes(router);
|
|
30
|
-
//
|
|
31
|
-
|
|
30
|
+
// Token usage stats + daily token caps + boosts (specs/2026-10-02-spend-cap.md)
|
|
31
|
+
registerUsageRoutes(router);
|
|
32
32
|
// API Health within /api scope
|
|
33
33
|
router.get('/health', (req, res) => systemHandlers.healthCheck.call(apiController, req, res));
|
|
34
34
|
// Local IP address for QR code generation (mobile access)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.routes.js","sourceRoot":"","sources":["../../../../../../backend/src/routes/modules/system.routes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"system.routes.js","sourceRoot":"","sources":["../../../../../../backend/src/routes/modules/system.routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repair orphan-superseded decisions.
|
|
3
|
+
*
|
|
4
|
+
* Bug: addDecision() at the decision cap marked the newest active decision
|
|
5
|
+
* `superseded` with no `supersededBy`. Rule: status === 'superseded' AND no
|
|
6
|
+
* supersededBy -> 'active'. Genuine supersessions (supersededBy set) are untouched.
|
|
7
|
+
*
|
|
8
|
+
* Dry-run by default; `--apply` writes (after backing up to
|
|
9
|
+
* decisions.json.bak-<timestamp>). Targets: every project in ~/.crewly/projects.json
|
|
10
|
+
* that has `.crewly/knowledge/decisions.json`, or explicit paths after the flags.
|
|
11
|
+
*
|
|
12
|
+
* Usage: npx tsx backend/src/scripts/repair-orphan-superseded-decisions.ts [--apply] [projectPath...]
|
|
13
|
+
*
|
|
14
|
+
* @module scripts/repair-orphan-superseded-decisions
|
|
15
|
+
*/
|
|
16
|
+
/** Per-vault result. */
|
|
17
|
+
export interface VaultRepairResult {
|
|
18
|
+
file: string;
|
|
19
|
+
examined: number;
|
|
20
|
+
orphans: number;
|
|
21
|
+
repaired: number;
|
|
22
|
+
backup?: string;
|
|
23
|
+
error?: string;
|
|
24
|
+
}
|
|
25
|
+
/** Relative location of the decisions file inside a project. */
|
|
26
|
+
export declare const DECISIONS_REL_PATH: string;
|
|
27
|
+
/**
|
|
28
|
+
* Repair one decisions.json.
|
|
29
|
+
*
|
|
30
|
+
* @param file - Absolute path of decisions.json
|
|
31
|
+
* @param apply - Write changes when true; otherwise report only
|
|
32
|
+
* @returns Counts for the file; `error` is set when it could not be parsed
|
|
33
|
+
*/
|
|
34
|
+
export declare function repairDecisionsFile(file: string, apply: boolean): Promise<VaultRepairResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve decisions.json files for the given project paths (or all registered projects).
|
|
37
|
+
*
|
|
38
|
+
* @param projectPaths - Explicit project roots; when empty, read ~/.crewly/projects.json
|
|
39
|
+
* @param projectsJson - Override path of projects.json (tests)
|
|
40
|
+
* @returns Existing decisions.json absolute paths
|
|
41
|
+
*/
|
|
42
|
+
export declare function resolveDecisionFiles(projectPaths: string[], projectsJson?: string): Promise<string[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Run the repair across projects.
|
|
45
|
+
*
|
|
46
|
+
* @returns results plus `ok=false` when zero files were examined (refuses to report success)
|
|
47
|
+
*/
|
|
48
|
+
export declare function runRepair(opts: {
|
|
49
|
+
apply: boolean;
|
|
50
|
+
projectPaths?: string[];
|
|
51
|
+
projectsJson?: string;
|
|
52
|
+
}): Promise<{
|
|
53
|
+
ok: boolean;
|
|
54
|
+
results: VaultRepairResult[];
|
|
55
|
+
}>;
|
|
56
|
+
//# sourceMappingURL=repair-orphan-superseded-decisions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-orphan-superseded-decisions.d.ts","sourceRoot":"","sources":["../../../../../backend/src/scripts/repair-orphan-superseded-decisions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,wBAAwB;AACxB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gEAAgE;AAChE,eAAO,MAAM,kBAAkB,QAAsD,CAAC;AAItF;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4BlG;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAc3G;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAAC,CAMhK"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repair orphan-superseded decisions.
|
|
3
|
+
*
|
|
4
|
+
* Bug: addDecision() at the decision cap marked the newest active decision
|
|
5
|
+
* `superseded` with no `supersededBy`. Rule: status === 'superseded' AND no
|
|
6
|
+
* supersededBy -> 'active'. Genuine supersessions (supersededBy set) are untouched.
|
|
7
|
+
*
|
|
8
|
+
* Dry-run by default; `--apply` writes (after backing up to
|
|
9
|
+
* decisions.json.bak-<timestamp>). Targets: every project in ~/.crewly/projects.json
|
|
10
|
+
* that has `.crewly/knowledge/decisions.json`, or explicit paths after the flags.
|
|
11
|
+
*
|
|
12
|
+
* Usage: npx tsx backend/src/scripts/repair-orphan-superseded-decisions.ts [--apply] [projectPath...]
|
|
13
|
+
*
|
|
14
|
+
* @module scripts/repair-orphan-superseded-decisions
|
|
15
|
+
*/
|
|
16
|
+
import * as fs from 'fs/promises';
|
|
17
|
+
import * as os from 'os';
|
|
18
|
+
import * as path from 'path';
|
|
19
|
+
/** Relative location of the decisions file inside a project. */
|
|
20
|
+
export const DECISIONS_REL_PATH = path.join('.crewly', 'knowledge', 'decisions.json');
|
|
21
|
+
/**
|
|
22
|
+
* Repair one decisions.json.
|
|
23
|
+
*
|
|
24
|
+
* @param file - Absolute path of decisions.json
|
|
25
|
+
* @param apply - Write changes when true; otherwise report only
|
|
26
|
+
* @returns Counts for the file; `error` is set when it could not be parsed
|
|
27
|
+
*/
|
|
28
|
+
export async function repairDecisionsFile(file, apply) {
|
|
29
|
+
const result = { file, examined: 0, orphans: 0, repaired: 0 };
|
|
30
|
+
let data;
|
|
31
|
+
try {
|
|
32
|
+
data = JSON.parse(await fs.readFile(file, 'utf8'));
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
result.error = `unreadable/malformed: ${err.message}`;
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
if (!Array.isArray(data)) {
|
|
39
|
+
result.error = 'not a JSON array';
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
const decisions = data;
|
|
43
|
+
result.examined = decisions.length;
|
|
44
|
+
const orphans = decisions.filter(d => d && d.status === 'superseded' && !d.supersededBy);
|
|
45
|
+
result.orphans = orphans.length;
|
|
46
|
+
if (orphans.length === 0 || !apply)
|
|
47
|
+
return result;
|
|
48
|
+
const backup = `${file}.bak-${new Date().toISOString().replace(/[:.]/g, '-')}`;
|
|
49
|
+
await fs.copyFile(file, backup);
|
|
50
|
+
result.backup = backup;
|
|
51
|
+
for (const d of orphans)
|
|
52
|
+
d.status = 'active';
|
|
53
|
+
const tmp = `${file}.tmp-${process.pid}`;
|
|
54
|
+
await fs.writeFile(tmp, JSON.stringify(decisions, null, 2));
|
|
55
|
+
await fs.rename(tmp, file);
|
|
56
|
+
result.repaired = orphans.length;
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Resolve decisions.json files for the given project paths (or all registered projects).
|
|
61
|
+
*
|
|
62
|
+
* @param projectPaths - Explicit project roots; when empty, read ~/.crewly/projects.json
|
|
63
|
+
* @param projectsJson - Override path of projects.json (tests)
|
|
64
|
+
* @returns Existing decisions.json absolute paths
|
|
65
|
+
*/
|
|
66
|
+
export async function resolveDecisionFiles(projectPaths, projectsJson) {
|
|
67
|
+
let roots = projectPaths;
|
|
68
|
+
if (roots.length === 0) {
|
|
69
|
+
const pj = projectsJson ?? path.join(os.homedir(), '.crewly', 'projects.json');
|
|
70
|
+
const raw = JSON.parse(await fs.readFile(pj, 'utf8'));
|
|
71
|
+
const list = Array.isArray(raw) ? raw : Object.values(raw.projects ?? raw);
|
|
72
|
+
roots = list.map(p => p?.path).filter((p) => typeof p === 'string');
|
|
73
|
+
}
|
|
74
|
+
const files = [];
|
|
75
|
+
for (const r of roots) {
|
|
76
|
+
const f = path.join(r, DECISIONS_REL_PATH);
|
|
77
|
+
try {
|
|
78
|
+
await fs.access(f);
|
|
79
|
+
files.push(f);
|
|
80
|
+
}
|
|
81
|
+
catch { /* no decisions file */ }
|
|
82
|
+
}
|
|
83
|
+
return files;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Run the repair across projects.
|
|
87
|
+
*
|
|
88
|
+
* @returns results plus `ok=false` when zero files were examined (refuses to report success)
|
|
89
|
+
*/
|
|
90
|
+
export async function runRepair(opts) {
|
|
91
|
+
const files = await resolveDecisionFiles(opts.projectPaths ?? [], opts.projectsJson);
|
|
92
|
+
const results = [];
|
|
93
|
+
for (const f of files)
|
|
94
|
+
results.push(await repairDecisionsFile(f, opts.apply));
|
|
95
|
+
const parsed = results.filter(r => !r.error);
|
|
96
|
+
return { ok: parsed.length > 0 && results.every(r => !r.error), results };
|
|
97
|
+
}
|
|
98
|
+
async function main() {
|
|
99
|
+
const args = process.argv.slice(2);
|
|
100
|
+
const apply = args.includes('--apply');
|
|
101
|
+
const { ok, results } = await runRepair({ apply, projectPaths: args.filter(a => !a.startsWith('--')) });
|
|
102
|
+
console.log(apply ? 'MODE: apply' : 'MODE: dry-run (pass --apply to write)');
|
|
103
|
+
for (const r of results) {
|
|
104
|
+
console.log(`${r.file}: examined=${r.examined} orphans=${r.orphans} repaired=${r.repaired}${r.error ? ` ERROR=${r.error}` : ''}${r.backup ? ` backup=${r.backup}` : ''}`);
|
|
105
|
+
}
|
|
106
|
+
console.log(`${results.length} file(s) examined`);
|
|
107
|
+
if (results.length === 0)
|
|
108
|
+
console.log('NO FILES EXAMINED — refusing to report success');
|
|
109
|
+
process.exit(ok ? 0 : 1);
|
|
110
|
+
}
|
|
111
|
+
if (process.argv[1] && /repair-orphan-superseded-decisions\.(ts|js)$/.test(process.argv[1])) {
|
|
112
|
+
void main();
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=repair-orphan-superseded-decisions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-orphan-superseded-decisions.js","sourceRoot":"","sources":["../../../../../backend/src/scripts/repair-orphan-superseded-decisions.ts"],"names":[],"mappings":"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"}
|
|
@@ -2991,15 +2991,15 @@ Loop until done, blocked, or explicitly reassigned:
|
|
|
2991
2991
|
error,
|
|
2992
2992
|
};
|
|
2993
2993
|
}
|
|
2994
|
-
// Daily
|
|
2994
|
+
// Daily token cap (specs/2026-10-02-spend-cap.md): waking a capped
|
|
2995
2995
|
// agent is refused with the reason. The orchestrator's session may still
|
|
2996
2996
|
// start (an idle session costs nothing); its turns are held by the
|
|
2997
2997
|
// delivery gate and its queue.
|
|
2998
2998
|
if (config.sessionName !== ORCHESTRATOR_SESSION_NAME) {
|
|
2999
2999
|
const spendStop = spendCapStopOf(config.sessionName);
|
|
3000
3000
|
if (spendStop) {
|
|
3001
|
-
const error = `${spendCapReason(spendStop)}; it starts again at midnight or when the owner
|
|
3002
|
-
this.logger.info('Refusing to wake an agent stopped by
|
|
3001
|
+
const error = `${spendCapReason(spendStop)}; it starts again at midnight or when the owner boosts it`;
|
|
3002
|
+
this.logger.info('Refusing to wake an agent stopped by a daily token cap', { sessionName: config.sessionName, capTokens: spendStop.capTokens, scope: spendStop.scope });
|
|
3003
3003
|
return { success: false, sessionName: config.sessionName, error, errorCode: SPEND_CAP_CONSTANTS.ERROR_CODE };
|
|
3004
3004
|
}
|
|
3005
3005
|
}
|
|
@@ -3783,15 +3783,15 @@ Loop until done, blocked, or explicitly reassigned:
|
|
|
3783
3783
|
message: '[RUNTIME_FALLBACK] Message queued while the agent moves to its fallback runtime',
|
|
3784
3784
|
};
|
|
3785
3785
|
}
|
|
3786
|
-
// Daily
|
|
3786
|
+
// Daily token cap (specs/2026-10-02-spend-cap.md): a capped agent
|
|
3787
3787
|
// starts no new turn. The message waits in the persistent queue and is
|
|
3788
|
-
// delivered when the cap resets at midnight or the owner
|
|
3788
|
+
// delivered when the cap resets at midnight or the owner boosts it.
|
|
3789
3789
|
const spendStop = spendCapStopOf(sessionName);
|
|
3790
3790
|
if (spendStop) {
|
|
3791
3791
|
SubAgentMessageQueue.getInstance().enqueue(sessionName, message);
|
|
3792
|
-
this.logger.info('Daily
|
|
3792
|
+
this.logger.info('Daily token cap reached — message queued, no new turn', {
|
|
3793
3793
|
sessionName,
|
|
3794
|
-
|
|
3794
|
+
capTokens: spendStop.capTokens,
|
|
3795
3795
|
scope: spendStop.scope,
|
|
3796
3796
|
messageLength: message.length,
|
|
3797
3797
|
});
|