shreni 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ARCHITECTURE.md +260 -0
- package/LICENSE +201 -0
- package/README.md +519 -0
- package/TRADEMARK.md +97 -0
- package/dist/agents/parikshaka.d.ts +11 -0
- package/dist/agents/parikshaka.d.ts.map +1 -0
- package/dist/agents/parikshaka.js +80 -0
- package/dist/agents/parikshaka.js.map +1 -0
- package/dist/agents/providers/claude.d.ts +3 -0
- package/dist/agents/providers/claude.d.ts.map +1 -0
- package/dist/agents/providers/claude.js +100 -0
- package/dist/agents/providers/claude.js.map +1 -0
- package/dist/agents/providers/codex.d.ts +3 -0
- package/dist/agents/providers/codex.d.ts.map +1 -0
- package/dist/agents/providers/codex.js +123 -0
- package/dist/agents/providers/codex.js.map +1 -0
- package/dist/agents/providers/gemini.d.ts +3 -0
- package/dist/agents/providers/gemini.d.ts.map +1 -0
- package/dist/agents/providers/gemini.js +77 -0
- package/dist/agents/providers/gemini.js.map +1 -0
- package/dist/agents/providers/index.d.ts +6 -0
- package/dist/agents/providers/index.d.ts.map +1 -0
- package/dist/agents/providers/index.js +35 -0
- package/dist/agents/providers/index.js.map +1 -0
- package/dist/agents/providers/registry.d.ts +20 -0
- package/dist/agents/providers/registry.d.ts.map +1 -0
- package/dist/agents/providers/registry.js +91 -0
- package/dist/agents/providers/registry.js.map +1 -0
- package/dist/agents/providers/types.d.ts +42 -0
- package/dist/agents/providers/types.d.ts.map +1 -0
- package/dist/agents/providers/types.js +61 -0
- package/dist/agents/providers/types.js.map +1 -0
- package/dist/agents/runner.d.ts +6 -0
- package/dist/agents/runner.d.ts.map +1 -0
- package/dist/agents/runner.js +159 -0
- package/dist/agents/runner.js.map +1 -0
- package/dist/agents/silpi.d.ts +3 -0
- package/dist/agents/silpi.d.ts.map +1 -0
- package/dist/agents/silpi.js +101 -0
- package/dist/agents/silpi.js.map +1 -0
- package/dist/agents/viharapala.d.ts +5 -0
- package/dist/agents/viharapala.d.ts.map +1 -0
- package/dist/agents/viharapala.js +128 -0
- package/dist/agents/viharapala.js.map +1 -0
- package/dist/cli/agents.d.ts +14 -0
- package/dist/cli/agents.d.ts.map +1 -0
- package/dist/cli/agents.js +47 -0
- package/dist/cli/agents.js.map +1 -0
- package/dist/cli/detect-toolchain.d.ts +10 -0
- package/dist/cli/detect-toolchain.d.ts.map +1 -0
- package/dist/cli/detect-toolchain.js +77 -0
- package/dist/cli/detect-toolchain.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +342 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-kshetra.d.ts +59 -0
- package/dist/cli/init-kshetra.d.ts.map +1 -0
- package/dist/cli/init-kshetra.js +531 -0
- package/dist/cli/init-kshetra.js.map +1 -0
- package/dist/cli/list.d.ts +11 -0
- package/dist/cli/list.d.ts.map +1 -0
- package/dist/cli/list.js +45 -0
- package/dist/cli/list.js.map +1 -0
- package/dist/cli/logs.d.ts +20 -0
- package/dist/cli/logs.d.ts.map +1 -0
- package/dist/cli/logs.js +144 -0
- package/dist/cli/logs.js.map +1 -0
- package/dist/cli/migrate.d.ts +8 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +116 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli/pause.d.ts +24 -0
- package/dist/cli/pause.d.ts.map +1 -0
- package/dist/cli/pause.js +41 -0
- package/dist/cli/pause.js.map +1 -0
- package/dist/cli/phalaka-autostart.d.ts +11 -0
- package/dist/cli/phalaka-autostart.d.ts.map +1 -0
- package/dist/cli/phalaka-autostart.js +28 -0
- package/dist/cli/phalaka-autostart.js.map +1 -0
- package/dist/cli/phalaka-server.d.ts +2 -0
- package/dist/cli/phalaka-server.d.ts.map +1 -0
- package/dist/cli/phalaka-server.js +20 -0
- package/dist/cli/phalaka-server.js.map +1 -0
- package/dist/cli/phalaka.d.ts +30 -0
- package/dist/cli/phalaka.d.ts.map +1 -0
- package/dist/cli/phalaka.js +60 -0
- package/dist/cli/phalaka.js.map +1 -0
- package/dist/cli/pid.d.ts +9 -0
- package/dist/cli/pid.d.ts.map +1 -0
- package/dist/cli/pid.js +66 -0
- package/dist/cli/pid.js.map +1 -0
- package/dist/cli/provider-preflight.d.ts +11 -0
- package/dist/cli/provider-preflight.d.ts.map +1 -0
- package/dist/cli/provider-preflight.js +70 -0
- package/dist/cli/provider-preflight.js.map +1 -0
- package/dist/cli/register.d.ts +8 -0
- package/dist/cli/register.d.ts.map +1 -0
- package/dist/cli/register.js +34 -0
- package/dist/cli/register.js.map +1 -0
- package/dist/cli/run.d.ts +3 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +40 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/start.d.ts +11 -0
- package/dist/cli/start.d.ts.map +1 -0
- package/dist/cli/start.js +26 -0
- package/dist/cli/start.js.map +1 -0
- package/dist/cli/status.d.ts +39 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +207 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/stop.d.ts +13 -0
- package/dist/cli/stop.d.ts.map +1 -0
- package/dist/cli/stop.js +18 -0
- package/dist/cli/stop.js.map +1 -0
- package/dist/cli/sync.d.ts +6 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +31 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/tail.d.ts +6 -0
- package/dist/cli/tail.d.ts.map +1 -0
- package/dist/cli/tail.js +170 -0
- package/dist/cli/tail.js.map +1 -0
- package/dist/cli/telemetry.d.ts +2 -0
- package/dist/cli/telemetry.d.ts.map +1 -0
- package/dist/cli/telemetry.js +42 -0
- package/dist/cli/telemetry.js.map +1 -0
- package/dist/cli/verify-hooks.d.ts +12 -0
- package/dist/cli/verify-hooks.d.ts.map +1 -0
- package/dist/cli/verify-hooks.js +38 -0
- package/dist/cli/verify-hooks.js.map +1 -0
- package/dist/cli/worker.d.ts +2 -0
- package/dist/cli/worker.d.ts.map +1 -0
- package/dist/cli/worker.js +211 -0
- package/dist/cli/worker.js.map +1 -0
- package/dist/kshetra/config.d.ts +64 -0
- package/dist/kshetra/config.d.ts.map +1 -0
- package/dist/kshetra/config.js +173 -0
- package/dist/kshetra/config.js.map +1 -0
- package/dist/kshetra/registry.d.ts +5 -0
- package/dist/kshetra/registry.d.ts.map +1 -0
- package/dist/kshetra/registry.js +69 -0
- package/dist/kshetra/registry.js.map +1 -0
- package/dist/kshetra/state.d.ts +57 -0
- package/dist/kshetra/state.d.ts.map +1 -0
- package/dist/kshetra/state.js +195 -0
- package/dist/kshetra/state.js.map +1 -0
- package/dist/kshetra/toolchain.d.ts +20 -0
- package/dist/kshetra/toolchain.d.ts.map +1 -0
- package/dist/kshetra/toolchain.js +146 -0
- package/dist/kshetra/toolchain.js.map +1 -0
- package/dist/phalaka/api.d.ts +123 -0
- package/dist/phalaka/api.d.ts.map +1 -0
- package/dist/phalaka/api.js +196 -0
- package/dist/phalaka/api.js.map +1 -0
- package/dist/phalaka/beads-read.d.ts +49 -0
- package/dist/phalaka/beads-read.d.ts.map +1 -0
- package/dist/phalaka/beads-read.js +174 -0
- package/dist/phalaka/beads-read.js.map +1 -0
- package/dist/phalaka/pid.d.ts +6 -0
- package/dist/phalaka/pid.d.ts.map +1 -0
- package/dist/phalaka/pid.js +48 -0
- package/dist/phalaka/pid.js.map +1 -0
- package/dist/phalaka/server.d.ts +10 -0
- package/dist/phalaka/server.d.ts.map +1 -0
- package/dist/phalaka/server.js +30 -0
- package/dist/phalaka/server.js.map +1 -0
- package/dist/phalaka/token.d.ts +5 -0
- package/dist/phalaka/token.d.ts.map +1 -0
- package/dist/phalaka/token.js +40 -0
- package/dist/phalaka/token.js.map +1 -0
- package/dist/phalaka/ui.d.ts +15 -0
- package/dist/phalaka/ui.d.ts.map +1 -0
- package/dist/phalaka/ui.js +233 -0
- package/dist/phalaka/ui.js.map +1 -0
- package/dist/sthapathi/activity-log.d.ts +68 -0
- package/dist/sthapathi/activity-log.d.ts.map +1 -0
- package/dist/sthapathi/activity-log.js +57 -0
- package/dist/sthapathi/activity-log.js.map +1 -0
- package/dist/sthapathi/beads.d.ts +27 -0
- package/dist/sthapathi/beads.d.ts.map +1 -0
- package/dist/sthapathi/beads.js +153 -0
- package/dist/sthapathi/beads.js.map +1 -0
- package/dist/sthapathi/branch.d.ts +5 -0
- package/dist/sthapathi/branch.d.ts.map +1 -0
- package/dist/sthapathi/branch.js +20 -0
- package/dist/sthapathi/branch.js.map +1 -0
- package/dist/sthapathi/dispatch.d.ts +14 -0
- package/dist/sthapathi/dispatch.d.ts.map +1 -0
- package/dist/sthapathi/dispatch.js +326 -0
- package/dist/sthapathi/dispatch.js.map +1 -0
- package/dist/sthapathi/errors.d.ts +27 -0
- package/dist/sthapathi/errors.d.ts.map +1 -0
- package/dist/sthapathi/errors.js +174 -0
- package/dist/sthapathi/errors.js.map +1 -0
- package/dist/sthapathi/gh.d.ts +19 -0
- package/dist/sthapathi/gh.d.ts.map +1 -0
- package/dist/sthapathi/gh.js +69 -0
- package/dist/sthapathi/gh.js.map +1 -0
- package/dist/sthapathi/git.d.ts +41 -0
- package/dist/sthapathi/git.d.ts.map +1 -0
- package/dist/sthapathi/git.js +199 -0
- package/dist/sthapathi/git.js.map +1 -0
- package/dist/sthapathi/guard.d.ts +24 -0
- package/dist/sthapathi/guard.d.ts.map +1 -0
- package/dist/sthapathi/guard.js +64 -0
- package/dist/sthapathi/guard.js.map +1 -0
- package/dist/sthapathi/health.d.ts +23 -0
- package/dist/sthapathi/health.d.ts.map +1 -0
- package/dist/sthapathi/health.js +142 -0
- package/dist/sthapathi/health.js.map +1 -0
- package/dist/sthapathi/index.d.ts +21 -0
- package/dist/sthapathi/index.d.ts.map +1 -0
- package/dist/sthapathi/index.js +88 -0
- package/dist/sthapathi/index.js.map +1 -0
- package/dist/sthapathi/lifecycle.d.ts +7 -0
- package/dist/sthapathi/lifecycle.d.ts.map +1 -0
- package/dist/sthapathi/lifecycle.js +43 -0
- package/dist/sthapathi/lifecycle.js.map +1 -0
- package/dist/sthapathi/lint.d.ts +8 -0
- package/dist/sthapathi/lint.d.ts.map +1 -0
- package/dist/sthapathi/lint.js +33 -0
- package/dist/sthapathi/lint.js.map +1 -0
- package/dist/sthapathi/merge.d.ts +18 -0
- package/dist/sthapathi/merge.d.ts.map +1 -0
- package/dist/sthapathi/merge.js +259 -0
- package/dist/sthapathi/merge.js.map +1 -0
- package/dist/sthapathi/notifications.d.ts +14 -0
- package/dist/sthapathi/notifications.d.ts.map +1 -0
- package/dist/sthapathi/notifications.js +57 -0
- package/dist/sthapathi/notifications.js.map +1 -0
- package/dist/sthapathi/parikshaka-dispatch.d.ts +12 -0
- package/dist/sthapathi/parikshaka-dispatch.d.ts.map +1 -0
- package/dist/sthapathi/parikshaka-dispatch.js +0 -0
- package/dist/sthapathi/parikshaka-dispatch.js.map +1 -0
- package/dist/sthapathi/pickup.d.ts +13 -0
- package/dist/sthapathi/pickup.d.ts.map +1 -0
- package/dist/sthapathi/pickup.js +144 -0
- package/dist/sthapathi/pickup.js.map +1 -0
- package/dist/sthapathi/recover.d.ts +16 -0
- package/dist/sthapathi/recover.d.ts.map +1 -0
- package/dist/sthapathi/recover.js +149 -0
- package/dist/sthapathi/recover.js.map +1 -0
- package/dist/sthapathi/retry.d.ts +11 -0
- package/dist/sthapathi/retry.d.ts.map +1 -0
- package/dist/sthapathi/retry.js +42 -0
- package/dist/sthapathi/retry.js.map +1 -0
- package/dist/sthapathi/self-heal.d.ts +19 -0
- package/dist/sthapathi/self-heal.d.ts.map +1 -0
- package/dist/sthapathi/self-heal.js +46 -0
- package/dist/sthapathi/self-heal.js.map +1 -0
- package/dist/sthapathi/types.d.ts +56 -0
- package/dist/sthapathi/types.d.ts.map +1 -0
- package/dist/sthapathi/types.js +4 -0
- package/dist/sthapathi/types.js.map +1 -0
- package/dist/sthapathi/watchdog.d.ts +27 -0
- package/dist/sthapathi/watchdog.d.ts.map +1 -0
- package/dist/sthapathi/watchdog.js +145 -0
- package/dist/sthapathi/watchdog.js.map +1 -0
- package/dist/telemetry/telemetry.d.ts +42 -0
- package/dist/telemetry/telemetry.d.ts.map +1 -0
- package/dist/telemetry/telemetry.js +189 -0
- package/dist/telemetry/telemetry.js.map +1 -0
- package/dist/test-setup.d.ts +2 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +16 -0
- package/dist/test-setup.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export type ActivityEvent = {
|
|
2
|
+
type: 'task_claimed';
|
|
3
|
+
kshetra: string;
|
|
4
|
+
beadId: string;
|
|
5
|
+
title: string;
|
|
6
|
+
} | {
|
|
7
|
+
type: 'round_start';
|
|
8
|
+
kshetra: string;
|
|
9
|
+
beadId: string;
|
|
10
|
+
round: number;
|
|
11
|
+
agent: 'silpi' | 'viharapala';
|
|
12
|
+
} | {
|
|
13
|
+
type: 'agent_text';
|
|
14
|
+
kshetra: string;
|
|
15
|
+
beadId: string;
|
|
16
|
+
agent: 'silpi' | 'viharapala' | 'parikshaka';
|
|
17
|
+
text: string;
|
|
18
|
+
} | {
|
|
19
|
+
type: 'agent_tool_call';
|
|
20
|
+
kshetra: string;
|
|
21
|
+
beadId: string;
|
|
22
|
+
agent: 'silpi' | 'viharapala' | 'parikshaka';
|
|
23
|
+
tool: string;
|
|
24
|
+
detail: string;
|
|
25
|
+
} | {
|
|
26
|
+
type: 'silpi_done';
|
|
27
|
+
kshetra: string;
|
|
28
|
+
beadId: string;
|
|
29
|
+
round: number;
|
|
30
|
+
summary: string;
|
|
31
|
+
confidence: number;
|
|
32
|
+
files: string[];
|
|
33
|
+
lintPassed: boolean;
|
|
34
|
+
testsPassed: boolean;
|
|
35
|
+
} | {
|
|
36
|
+
type: 'viharapala_done';
|
|
37
|
+
kshetra: string;
|
|
38
|
+
beadId: string;
|
|
39
|
+
round: number;
|
|
40
|
+
verdict: 'APPROVE' | 'REJECT';
|
|
41
|
+
score: number;
|
|
42
|
+
mustFix: string[];
|
|
43
|
+
} | {
|
|
44
|
+
type: 'task_done';
|
|
45
|
+
kshetra: string;
|
|
46
|
+
beadId: string;
|
|
47
|
+
title: string;
|
|
48
|
+
approved: boolean;
|
|
49
|
+
rounds: number;
|
|
50
|
+
} | {
|
|
51
|
+
type: 'beads_synced';
|
|
52
|
+
kshetra: string;
|
|
53
|
+
} | {
|
|
54
|
+
type: 'error';
|
|
55
|
+
kshetra: string;
|
|
56
|
+
beadId?: string;
|
|
57
|
+
message: string;
|
|
58
|
+
};
|
|
59
|
+
export type LoggedEvent = ActivityEvent & {
|
|
60
|
+
ts: string;
|
|
61
|
+
};
|
|
62
|
+
export declare function logPath(kshetraId: string): string;
|
|
63
|
+
export declare function notificationsPath(kshetraId: string): string;
|
|
64
|
+
export declare function legacyLogPath(kshetraId: string): string;
|
|
65
|
+
export declare function heartbeatPath(kshetraId: string): string;
|
|
66
|
+
export declare function touchHeartbeat(kshetraId: string): void;
|
|
67
|
+
export declare function emit(event: ActivityEvent): void;
|
|
68
|
+
//# sourceMappingURL=activity-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-log.d.ts","sourceRoot":"","sources":["../../src/sthapathi/activity-log.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAK,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,aAAa,CAAC;IAAM,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;CAAE,GAC3G;IAAE,IAAI,EAAE,YAAY,CAAC;IAAO,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzH;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzI;IAAE,IAAI,EAAE,YAAY,CAAC;IAAO,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAC7K;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7I;IAAE,IAAI,EAAE,WAAW,CAAC;IAAQ,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC/G;IAAE,IAAI,EAAE,cAAc,CAAC;IAAK,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAY,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAMzD,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjD;AAGD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAGD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AASD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AAID,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAOtD;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAQ/C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logPath = logPath;
|
|
4
|
+
exports.notificationsPath = notificationsPath;
|
|
5
|
+
exports.legacyLogPath = legacyLogPath;
|
|
6
|
+
exports.heartbeatPath = heartbeatPath;
|
|
7
|
+
exports.touchHeartbeat = touchHeartbeat;
|
|
8
|
+
exports.emit = emit;
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const os_1 = require("os");
|
|
12
|
+
function kshetraDir(kshetraId) {
|
|
13
|
+
return (0, path_1.join)((0, os_1.homedir)(), '.shreni', 'kshetra', kshetraId);
|
|
14
|
+
}
|
|
15
|
+
function logPath(kshetraId) {
|
|
16
|
+
return (0, path_1.join)(kshetraDir(kshetraId), 'activity.jsonl');
|
|
17
|
+
}
|
|
18
|
+
// Durable notification feed (stuck/end-state alerts) surfaced by Phalaka.
|
|
19
|
+
function notificationsPath(kshetraId) {
|
|
20
|
+
return (0, path_1.join)(kshetraDir(kshetraId), 'notifications.jsonl');
|
|
21
|
+
}
|
|
22
|
+
// Pre-Feature-2 location, kept so `tail` can read older logs.
|
|
23
|
+
function legacyLogPath(kshetraId) {
|
|
24
|
+
return (0, path_1.join)((0, os_1.homedir)(), '.shreni', 'logs', `${kshetraId}.jsonl`);
|
|
25
|
+
}
|
|
26
|
+
// Worker-liveness heartbeat (the watchdog design §3.1 / OQ1). A bare file whose
|
|
27
|
+
// *mtime* is the liveness signal — decoupled from agent emits so a long SILENT tool
|
|
28
|
+
// call (a build, `pnpm test`, a slow `bd` op) no longer reads as a hung agent. The
|
|
29
|
+
// worker touches it on a fixed cadence while a phase is active; the watchdog reads
|
|
30
|
+
// its mtime instead of `activity.jsonl`'s. A file (not a state.json field) avoids a
|
|
31
|
+
// read-modify-write of state.json on every tick and can't clobber concurrent JSON
|
|
32
|
+
// writers (CLI pause/resume, setPhase).
|
|
33
|
+
function heartbeatPath(kshetraId) {
|
|
34
|
+
return (0, path_1.join)(kshetraDir(kshetraId), 'heartbeat');
|
|
35
|
+
}
|
|
36
|
+
// Stamp the heartbeat: rewriting the (empty) file bumps its mtime to now. Best-effort
|
|
37
|
+
// — never let a heartbeat failure crash the worker.
|
|
38
|
+
function touchHeartbeat(kshetraId) {
|
|
39
|
+
try {
|
|
40
|
+
(0, fs_1.mkdirSync)(kshetraDir(kshetraId), { recursive: true });
|
|
41
|
+
(0, fs_1.writeFileSync)(heartbeatPath(kshetraId), '', 'utf8');
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Never let heartbeat stamping crash the worker
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function emit(event) {
|
|
48
|
+
try {
|
|
49
|
+
(0, fs_1.mkdirSync)(kshetraDir(event.kshetra), { recursive: true });
|
|
50
|
+
const entry = { ...event, ts: new Date().toISOString() };
|
|
51
|
+
(0, fs_1.appendFileSync)(logPath(event.kshetra), JSON.stringify(entry) + '\n', 'utf8');
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Never let logging crash the worker
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=activity-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-log.js","sourceRoot":"","sources":["../../src/sthapathi/activity-log.ts"],"names":[],"mappings":";;AAqBA,0BAEC;AAGD,8CAEC;AAGD,sCAEC;AASD,sCAEC;AAID,wCAOC;AAED,oBAQC;AAjED,2BAA8D;AAC9D,+BAA4B;AAC5B,2BAA6B;AAe7B,SAAS,UAAU,CAAC,SAAiB;IACnC,OAAO,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,OAAO,CAAC,SAAiB;IACvC,OAAO,IAAA,WAAI,EAAC,UAAU,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACvD,CAAC;AAED,0EAA0E;AAC1E,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,OAAO,IAAA,WAAI,EAAC,UAAU,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAC5D,CAAC;AAED,8DAA8D;AAC9D,SAAgB,aAAa,CAAC,SAAiB;IAC7C,OAAO,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,gFAAgF;AAChF,oFAAoF;AACpF,mFAAmF;AACnF,mFAAmF;AACnF,oFAAoF;AACpF,kFAAkF;AAClF,wCAAwC;AACxC,SAAgB,aAAa,CAAC,SAAiB;IAC7C,OAAO,IAAA,WAAI,EAAC,UAAU,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;AAClD,CAAC;AAED,sFAAsF;AACtF,oDAAoD;AACpD,SAAgB,cAAc,CAAC,SAAiB;IAC9C,IAAI,CAAC;QACH,IAAA,cAAS,EAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,IAAA,kBAAa,EAAC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;AACH,CAAC;AAED,SAAgB,IAAI,CAAC,KAAoB;IACvC,IAAI,CAAC;QACH,IAAA,cAAS,EAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAgB,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACtE,IAAA,mBAAc,EAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { KshetraConfig } from '../kshetra/config.js';
|
|
2
|
+
export declare class BeadsError extends Error {
|
|
3
|
+
readonly cause?: unknown | undefined;
|
|
4
|
+
constructor(message: string, cause?: unknown | undefined);
|
|
5
|
+
}
|
|
6
|
+
export declare function bd(kshetra: KshetraConfig): {
|
|
7
|
+
ready(): Promise<string>;
|
|
8
|
+
claim(id: string): Promise<string>;
|
|
9
|
+
show(id: string): Promise<string>;
|
|
10
|
+
prime(): Promise<string>;
|
|
11
|
+
close(id: string, note: string): Promise<string>;
|
|
12
|
+
create(title: string, priority: number, type?: string, labels?: string[]): Promise<string>;
|
|
13
|
+
search(query: string): Promise<string>;
|
|
14
|
+
remember(insight: string): Promise<string>;
|
|
15
|
+
addNote(id: string, note: string): Promise<string>;
|
|
16
|
+
flag(id: string, reason: string): Promise<string>;
|
|
17
|
+
reopen(id: string): Promise<string>;
|
|
18
|
+
addLabel(id: string, label: string): Promise<string>;
|
|
19
|
+
removeLabel(id: string, label: string): Promise<string>;
|
|
20
|
+
list(filters: {
|
|
21
|
+
status?: string;
|
|
22
|
+
label?: string;
|
|
23
|
+
excludeLabel?: string;
|
|
24
|
+
}): Promise<string>;
|
|
25
|
+
};
|
|
26
|
+
export declare function syncBeads(kshetra: KshetraConfig): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=beads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads.d.ts","sourceRoot":"","sources":["../../src/sthapathi/beads.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D,qBAAa,UAAW,SAAQ,KAAK;aAGjB,KAAK,CAAC,EAAE,OAAO;gBAD/B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,OAAO,YAAA;CAKlC;AAsBD,wBAAgB,EAAE,CAAC,OAAO,EAAE,aAAa;aAI5B,OAAO,CAAC,MAAM,CAAC;cAId,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAIzB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAIxB,OAAO,CAAC,MAAM,CAAC;cAId,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;kBAMlC,MAAM,YAAY,MAAM,SAAS,MAAM,WAAW,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;kBAS5E,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;sBAIpB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAI9B,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAKzC,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;eAMtC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;iBAOtB,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;oBAIpC,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;kBAIzC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;EAQ7F;AAQD,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/D"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BeadsError = void 0;
|
|
4
|
+
exports.bd = bd;
|
|
5
|
+
exports.syncBeads = syncBeads;
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const util_1 = require("util");
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const git_js_1 = require("./git.js");
|
|
11
|
+
const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
|
|
12
|
+
class BeadsError extends Error {
|
|
13
|
+
cause;
|
|
14
|
+
constructor(message, cause) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.cause = cause;
|
|
17
|
+
this.name = 'BeadsError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.BeadsError = BeadsError;
|
|
21
|
+
async function exec(args, env) {
|
|
22
|
+
try {
|
|
23
|
+
const { stdout } = await execFileAsync('bd', args, {
|
|
24
|
+
env,
|
|
25
|
+
maxBuffer: 4 * 1024 * 1024,
|
|
26
|
+
});
|
|
27
|
+
return stdout.trim();
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
const e = err;
|
|
31
|
+
throw new BeadsError(`bd ${args[0]} failed: ${e.stderr ?? e.message ?? String(err)}`, err);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Internal-only bd CLI wrapper. Never called by agents directly.
|
|
35
|
+
function bd(kshetra) {
|
|
36
|
+
const env = { ...process.env, BEADS_DIR: kshetra.beads.path };
|
|
37
|
+
return {
|
|
38
|
+
ready() {
|
|
39
|
+
return exec(['ready', '--json'], env);
|
|
40
|
+
},
|
|
41
|
+
claim(id) {
|
|
42
|
+
return exec(['update', id, '--claim'], env);
|
|
43
|
+
},
|
|
44
|
+
show(id) {
|
|
45
|
+
return exec(['show', id, '--json'], env);
|
|
46
|
+
},
|
|
47
|
+
prime() {
|
|
48
|
+
return exec(['prime'], env);
|
|
49
|
+
},
|
|
50
|
+
close(id, note) {
|
|
51
|
+
// Note must go through --reason; `bd close` treats bare positional args as
|
|
52
|
+
// additional issue IDs, so a note resembling an ID fails ID resolution.
|
|
53
|
+
return exec(['close', id, '--reason', note], env);
|
|
54
|
+
},
|
|
55
|
+
create(title, priority, type, labels) {
|
|
56
|
+
const args = ['create', title, '-p', String(priority)];
|
|
57
|
+
if (type)
|
|
58
|
+
args.push('-t', type);
|
|
59
|
+
if (labels && labels.length)
|
|
60
|
+
args.push('-l', labels.join(','));
|
|
61
|
+
return exec(args, env);
|
|
62
|
+
},
|
|
63
|
+
// Text search across titles (and IDs), all statuses — used for Parikshaka
|
|
64
|
+
// idempotency (don't refile a coverage gap that already has a bead).
|
|
65
|
+
search(query) {
|
|
66
|
+
return exec(['search', query, '--status', 'all', '--json'], env);
|
|
67
|
+
},
|
|
68
|
+
remember(insight) {
|
|
69
|
+
return exec(['remember', insight], env);
|
|
70
|
+
},
|
|
71
|
+
addNote(id, note) {
|
|
72
|
+
return exec(['note', id, note], env);
|
|
73
|
+
},
|
|
74
|
+
// Blocking a bead: set status to blocked and append the reason as a note
|
|
75
|
+
flag(id, reason) {
|
|
76
|
+
return exec(['update', id, '--status', 'blocked', '--append-notes', reason], env);
|
|
77
|
+
},
|
|
78
|
+
// Reopen a bead (back to the ready pool). Used by RECOVER to re-queue work
|
|
79
|
+
// stranded in_progress by a crash/restart for a fresh cycle.
|
|
80
|
+
reopen(id) {
|
|
81
|
+
return exec(['update', id, '--status', 'open'], env);
|
|
82
|
+
},
|
|
83
|
+
// Add / remove a label. Used by the PR merge policy (3r2) to mark a bead
|
|
84
|
+
// `awaiting-merge` (kept open + in_progress so dependents stay blocked) and
|
|
85
|
+
// to clear the marker once its PR is reconciled.
|
|
86
|
+
addLabel(id, label) {
|
|
87
|
+
return exec(['update', id, '--add-label', label], env);
|
|
88
|
+
},
|
|
89
|
+
removeLabel(id, label) {
|
|
90
|
+
return exec(['update', id, '--remove-label', label], env);
|
|
91
|
+
},
|
|
92
|
+
list(filters) {
|
|
93
|
+
const args = ['list', '--json'];
|
|
94
|
+
if (filters.status)
|
|
95
|
+
args.push('--status', filters.status);
|
|
96
|
+
if (filters.label)
|
|
97
|
+
args.push('--label', filters.label);
|
|
98
|
+
if (filters.excludeLabel)
|
|
99
|
+
args.push('--exclude-label', filters.excludeLabel);
|
|
100
|
+
return exec(args, env);
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
// One in-flight sync per beads path — callers that arrive while a sync is running
|
|
105
|
+
// share the same promise instead of racing on the git index.
|
|
106
|
+
const syncInFlight = new Map();
|
|
107
|
+
// syncBeads: commit any local changes, pull, push.
|
|
108
|
+
// Commit before pull so unstaged changes don't block the rebase.
|
|
109
|
+
function syncBeads(kshetra) {
|
|
110
|
+
const key = kshetra.beads.path;
|
|
111
|
+
const existing = syncInFlight.get(key);
|
|
112
|
+
if (existing)
|
|
113
|
+
return existing;
|
|
114
|
+
const promise = doSyncBeads(kshetra).finally(() => syncInFlight.delete(key));
|
|
115
|
+
syncInFlight.set(key, promise);
|
|
116
|
+
return promise;
|
|
117
|
+
}
|
|
118
|
+
async function doSyncBeads(kshetra) {
|
|
119
|
+
// Remove stale lock files left by crashed git processes
|
|
120
|
+
const indexLock = (0, path_1.join)(kshetra.beads.path, '.git', 'index.lock');
|
|
121
|
+
if ((0, fs_1.existsSync)(indexLock))
|
|
122
|
+
(0, fs_1.rmSync)(indexLock);
|
|
123
|
+
const g = (0, git_js_1.git)(kshetra.beads.path);
|
|
124
|
+
await g.add('-A');
|
|
125
|
+
await g.commit(`shreni: sync ${new Date().toISOString()}`);
|
|
126
|
+
// Beads sync must be resilient: a transient git hiccup must NOT propagate and
|
|
127
|
+
// abort the caller's cycle (it used to abort pickup). Benign
|
|
128
|
+
// conditions ("Already up to date", "no candidate for rebasing") are success;
|
|
129
|
+
// anything else is logged and swallowed — the local sync commit persists and a
|
|
130
|
+
// later cycle reconciles. (See the Sthapathi workflow design §4.7.)
|
|
131
|
+
try {
|
|
132
|
+
await g.pull('--rebase', 'origin', 'main');
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
if (!isBenignSyncError(err)) {
|
|
136
|
+
console.warn(`[shreni sync:${kshetra.id}] beads pull skipped: ${err.message}`);
|
|
137
|
+
return; // can't safely push over a failed/diverged pull; retry next cycle
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
await g.push('origin', 'main');
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
console.warn(`[shreni sync:${kshetra.id}] beads push deferred: ${err.message}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// "no candidate for rebasing" / "already up to date" are not failures — they
|
|
148
|
+
// mean the local branch is already reconciled with the remote.
|
|
149
|
+
function isBenignSyncError(err) {
|
|
150
|
+
const msg = err?.message ?? '';
|
|
151
|
+
return /no candidate for rebasing|already up[ -]to[ -]date/i.test(msg);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=beads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads.js","sourceRoot":"","sources":["../../src/sthapathi/beads.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { KshetraConfig } from '../kshetra/config.js';
|
|
2
|
+
import type { Task } from './types.js';
|
|
3
|
+
export declare function branchName(task: Pick<Task, 'id' | 'slug'>): string;
|
|
4
|
+
export declare function createTaskBranch(task: Task, kshetra: KshetraConfig): Promise<string>;
|
|
5
|
+
//# sourceMappingURL=branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/sthapathi/branch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAKvC,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,MAAM,CAElE;AAID,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1F"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.branchName = branchName;
|
|
4
|
+
exports.createTaskBranch = createTaskBranch;
|
|
5
|
+
const git_js_1 = require("./git.js");
|
|
6
|
+
// Only the id + slug are needed to name a branch, so any object carrying those
|
|
7
|
+
// works (a full Task, or the lighter awaiting-merge bead reconcile reconstructs).
|
|
8
|
+
function branchName(task) {
|
|
9
|
+
return `bead-${task.id}/${task.slug}`;
|
|
10
|
+
}
|
|
11
|
+
// Ensures we are on the latest main before branching so the task branch is
|
|
12
|
+
// never behind origin. Checkout → pull → branch in that order.
|
|
13
|
+
async function createTaskBranch(task, kshetra) {
|
|
14
|
+
const g = (0, git_js_1.git)(kshetra);
|
|
15
|
+
const main = kshetra.repo.mainBranch;
|
|
16
|
+
await g.checkout(main);
|
|
17
|
+
await g.pull('--rebase', 'origin', main);
|
|
18
|
+
return g.createBranch(task);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/sthapathi/branch.ts"],"names":[],"mappings":";;AAMA,gCAEC;AAID,4CAMC;AAhBD,qCAA+B;AAE/B,+EAA+E;AAC/E,kFAAkF;AAClF,SAAgB,UAAU,CAAC,IAA+B;IACxD,OAAO,QAAQ,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,2EAA2E;AAC3E,+DAA+D;AACxD,KAAK,UAAU,gBAAgB,CAAC,IAAU,EAAE,OAAsB;IACvE,MAAM,CAAC,GAAG,IAAA,YAAG,EAAC,OAAO,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;IACrC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { KshetraConfig } from '../kshetra/config.js';
|
|
2
|
+
import type { AgentContext, Task, SilpiOutput, ViharapalaOutput } from './types.js';
|
|
3
|
+
export declare function buildAgentContext(kshetra: KshetraConfig, task: Task): Promise<AgentContext>;
|
|
4
|
+
export declare function runSilpiSafe(kshetra: KshetraConfig, task: Task, context: AgentContext, round: number, branch: string, feedback?: ViharapalaOutput | null): Promise<SilpiOutput>;
|
|
5
|
+
export declare function runViharapalaSafe(kshetra: KshetraConfig, task: Task, context: AgentContext, silpiOut: SilpiOutput, round: number, branch: string): Promise<ViharapalaOutput>;
|
|
6
|
+
export declare function runSilpiViharapalaLoop(kshetra: KshetraConfig, task: Task, _branchParam: string, signal?: AbortSignal): Promise<{
|
|
7
|
+
approved: boolean;
|
|
8
|
+
note: string;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function runHealthRepairLoop(kshetra: KshetraConfig, task: Task, signal?: AbortSignal): Promise<{
|
|
11
|
+
approved: boolean;
|
|
12
|
+
note: string;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=dispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/sthapathi/dispatch.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAmCpF,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAkCjG;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,GACjC,OAAO,CAAC,WAAW,CAAC,CAetB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC,CAiB3B;AA4BD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA4H9C;AAOD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAiF9C"}
|