@hasna/loops 0.4.13 → 0.4.22
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/CHANGELOG.md +99 -3
- package/README.md +171 -39
- package/dist/api/index.d.ts +36 -0
- package/dist/api/index.js +1518 -15
- package/dist/cli/index.js +7280 -3213
- package/dist/cli/ui.d.ts +44 -0
- package/dist/daemon/index.js +1433 -303
- package/dist/generated/storage-kit/health.d.ts +19 -0
- package/dist/generated/storage-kit/index.d.ts +7 -0
- package/dist/generated/storage-kit/migrations.d.ts +47 -0
- package/dist/generated/storage-kit/mode.d.ts +47 -0
- package/dist/generated/storage-kit/pool.d.ts +33 -0
- package/dist/generated/storage-kit/query.d.ts +35 -0
- package/dist/generated/storage-kit/tls.d.ts +25 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +8689 -4837
- package/dist/lib/cloud/mode.d.ts +17 -0
- package/dist/lib/cloud/resolve.d.ts +16 -0
- package/dist/lib/cloud/storage.d.ts +82 -0
- package/dist/lib/cloud/transport.d.ts +148 -0
- package/dist/lib/format.d.ts +2 -1
- package/dist/lib/health.d.ts +83 -3
- package/dist/lib/migration.d.ts +40 -0
- package/dist/lib/mode.js +15 -3
- package/dist/lib/route/index.d.ts +2 -0
- package/dist/lib/route/policies.d.ts +51 -0
- package/dist/lib/route/provider-admission.d.ts +37 -0
- package/dist/lib/route/throttle.d.ts +4 -0
- package/dist/lib/route/types.d.ts +8 -0
- package/dist/lib/run-receipts.d.ts +14 -0
- package/dist/lib/scheduler.d.ts +5 -2
- package/dist/lib/storage/contract.d.ts +7 -1
- package/dist/lib/storage/index.d.ts +1 -0
- package/dist/lib/storage/index.js +2028 -231
- package/dist/lib/storage/pg-executor.d.ts +27 -0
- package/dist/lib/storage/pg-runner-claim.d.ts +40 -0
- package/dist/lib/storage/postgres-loop-storage.d.ts +120 -0
- package/dist/lib/storage/postgres-schema.js +29 -0
- package/dist/lib/storage/postgres.js +29 -0
- package/dist/lib/storage/sqlite.d.ts +6 -0
- package/dist/lib/storage/sqlite.js +748 -26
- package/dist/lib/store/index.d.ts +268 -0
- package/dist/lib/store.d.ts +282 -1
- package/dist/lib/store.js +746 -26
- package/dist/lib/template-kit.d.ts +25 -0
- package/dist/lib/templates.d.ts +16 -1
- package/dist/mcp/http.d.ts +16 -0
- package/dist/mcp/index.js +2885 -634
- package/dist/runner/index.js +198 -32
- package/dist/sdk/http.d.ts +182 -0
- package/dist/sdk/http.js +166 -0
- package/dist/sdk/index.d.ts +55 -18
- package/dist/sdk/index.js +2734 -617
- package/dist/serve/index.d.ts +4 -0
- package/dist/serve/index.js +9095 -0
- package/dist/types.d.ts +52 -0
- package/docs/AUTOMATION_RUNTIME_DESIGN.md +442 -1
- package/docs/CUTOVER-RUNBOOK.md +78 -0
- package/docs/DEPLOYMENT_MODES.md +35 -18
- package/docs/RUNTIME_BOUNDARY.md +203 -0
- package/docs/USAGE.md +195 -38
- package/package.json +15 -3
|
@@ -17,6 +17,7 @@ export declare const KNOWLEDGE_REFRESH_TEMPLATE_ID = "knowledge-refresh";
|
|
|
17
17
|
export declare const REPORT_ONLY_TEMPLATE_ID = "report-only";
|
|
18
18
|
export declare const INCIDENT_RESPONSE_TEMPLATE_ID = "incident-response";
|
|
19
19
|
export declare const DETERMINISTIC_CHECK_CREATE_TASK_TEMPLATE_ID = "deterministic-check-create-task";
|
|
20
|
+
export declare const ROUTING_REMEDIATION_TEMPLATE_ID = "routing-remediation";
|
|
20
21
|
export type AgentWorkflowRole = "triage" | "planner" | "worker" | "verifier";
|
|
21
22
|
export declare const BUILTIN_TEMPLATE_SUMMARIES: LoopTemplateSummary[];
|
|
22
23
|
export declare const NO_TMUX_DISPATCH_FRAGMENT = "Do not dispatch or paste prompts into tmux panes. If additional work is required, create or update deduped todos tasks so task-created routing can start a fresh headless workflow.";
|
|
@@ -62,6 +63,30 @@ export declare function todosExactCommandsFragment(todosProjectPath: string, tas
|
|
|
62
63
|
export declare function worktreePrompt(plan: AgentWorktreeSpec): string;
|
|
63
64
|
export declare function worktreeContextFragment(plan: AgentWorktreeSpec): Record<string, unknown>;
|
|
64
65
|
export declare function shellQuote(value: string): string;
|
|
66
|
+
export interface RoutingRemediationScopeOptions {
|
|
67
|
+
doctorProject?: string;
|
|
68
|
+
tag?: string;
|
|
69
|
+
status?: string;
|
|
70
|
+
shard?: string;
|
|
71
|
+
limit?: string;
|
|
72
|
+
}
|
|
73
|
+
export interface RoutingRemediationPreflightCommandOptions extends RoutingRemediationScopeOptions {
|
|
74
|
+
todosProjectPath: string;
|
|
75
|
+
doctorJsonPath?: string;
|
|
76
|
+
doctorOutputPath: string;
|
|
77
|
+
preflightOutputPath: string;
|
|
78
|
+
maxRepairs: number;
|
|
79
|
+
dryRun: boolean;
|
|
80
|
+
idempotencyKey: string;
|
|
81
|
+
applyCommand: string;
|
|
82
|
+
}
|
|
83
|
+
export declare function routingRemediationDoctorScopeArgs(opts: RoutingRemediationScopeOptions): string[];
|
|
84
|
+
export declare function routingRemediationDoctorCommand(opts: RoutingRemediationScopeOptions & {
|
|
85
|
+
todosProjectPath: string;
|
|
86
|
+
apply?: boolean;
|
|
87
|
+
undoRecordPath?: string;
|
|
88
|
+
}): string;
|
|
89
|
+
export declare function routingRemediationPreflightCommand(opts: RoutingRemediationPreflightCommandOptions): string;
|
|
65
90
|
export declare function sourceTaskGateCommand(todosProjectPath: string, taskId: string): string;
|
|
66
91
|
export type LifecycleGateStage = "triage" | "planner";
|
|
67
92
|
export declare function lifecycleGateCommand(todosProjectPath: string, taskId: string, stage: LifecycleGateStage, goMarker: string, blockedMarker: string): string;
|
package/dist/lib/templates.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AccountRef, AgentPermissionMode, AgentProvider, AgentSandbox, AgentWorktreeMode, CreateWorkflowInput, LoopTemplateSource, LoopTemplateSummary, TimeoutMs } from "../types.js";
|
|
2
|
-
export { BOUNDED_AGENT_WORKER_VERIFIER_TEMPLATE_ID, DETERMINISTIC_CHECK_CREATE_TASK_TEMPLATE_ID, EVENT_WORKER_VERIFIER_TEMPLATE_ID, INCIDENT_RESPONSE_TEMPLATE_ID, KNOWLEDGE_REFRESH_TEMPLATE_ID, PR_REVIEW_TEMPLATE_ID, REPORT_ONLY_TEMPLATE_ID, SCHEDULED_AUDIT_TEMPLATE_ID, TASK_LIFECYCLE_TEMPLATE_ID, TODOS_TASK_WORKER_VERIFIER_TEMPLATE_ID, } from "./template-kit.js";
|
|
2
|
+
export { BOUNDED_AGENT_WORKER_VERIFIER_TEMPLATE_ID, DETERMINISTIC_CHECK_CREATE_TASK_TEMPLATE_ID, EVENT_WORKER_VERIFIER_TEMPLATE_ID, INCIDENT_RESPONSE_TEMPLATE_ID, KNOWLEDGE_REFRESH_TEMPLATE_ID, PR_REVIEW_TEMPLATE_ID, REPORT_ONLY_TEMPLATE_ID, ROUTING_REMEDIATION_TEMPLATE_ID, SCHEDULED_AUDIT_TEMPLATE_ID, TASK_LIFECYCLE_TEMPLATE_ID, TODOS_TASK_WORKER_VERIFIER_TEMPLATE_ID, } from "./template-kit.js";
|
|
3
3
|
import type { CustomLoopTemplateImportOptions, CustomLoopTemplateImportResult } from "./templates-custom.js";
|
|
4
4
|
export type { CustomLoopTemplateImportOptions, CustomLoopTemplateImportResult } from "./templates-custom.js";
|
|
5
5
|
/** Agent/account/worktree fields shared by every agent-backed builtin template input. */
|
|
@@ -65,6 +65,20 @@ export interface BoundedAgentWorkflowTemplateInput extends AgentWorkflowTemplate
|
|
|
65
65
|
objective: string;
|
|
66
66
|
prompt?: string;
|
|
67
67
|
}
|
|
68
|
+
export interface RoutingRemediationWorkflowTemplateInput extends AgentWorkflowTemplateBaseInput {
|
|
69
|
+
todosProjectPath?: string;
|
|
70
|
+
doctorJsonPath?: string;
|
|
71
|
+
doctorProject?: string;
|
|
72
|
+
tag?: string;
|
|
73
|
+
status?: string;
|
|
74
|
+
shard?: string;
|
|
75
|
+
limit?: string;
|
|
76
|
+
maxRepairs?: number;
|
|
77
|
+
dryRun?: boolean;
|
|
78
|
+
idempotencyKey?: string;
|
|
79
|
+
evidenceDir?: string;
|
|
80
|
+
undoDir?: string;
|
|
81
|
+
}
|
|
68
82
|
export type LoopTemplateSourceFilter = LoopTemplateSource | "all";
|
|
69
83
|
export interface ListLoopTemplatesOptions {
|
|
70
84
|
source?: LoopTemplateSourceFilter;
|
|
@@ -81,6 +95,7 @@ export declare function listLoopTemplates(opts?: ListLoopTemplatesOptions): Loop
|
|
|
81
95
|
export declare function getLoopTemplate(id: string, opts?: ListLoopTemplatesOptions): LoopTemplateSummary | undefined;
|
|
82
96
|
export declare function renderTodosTaskWorkerVerifierWorkflow(input: TodosTaskWorkflowTemplateInput): CreateWorkflowInput;
|
|
83
97
|
export declare function renderTaskLifecycleWorkflow(input: TodosTaskWorkflowTemplateInput): CreateWorkflowInput;
|
|
98
|
+
export declare function renderRoutingRemediationWorkflow(input: RoutingRemediationWorkflowTemplateInput): CreateWorkflowInput;
|
|
84
99
|
export declare function renderEventWorkerVerifierWorkflow(input: EventWorkflowTemplateInput): CreateWorkflowInput;
|
|
85
100
|
export declare function renderBoundedAgentWorkerVerifierWorkflow(input: BoundedAgentWorkflowTemplateInput): CreateWorkflowInput;
|
|
86
101
|
export declare function renderLoopTemplate(id: string, values: Record<string, string | undefined>, opts?: ListLoopTemplatesOptions): CreateWorkflowInput;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export declare const MCP_HTTP_SERVICE_NAME = "loops";
|
|
3
|
+
export declare const DEFAULT_MCP_HTTP_PORT = 8890;
|
|
4
|
+
export declare function isHttpMode(argv?: string[], env?: NodeJS.ProcessEnv): boolean;
|
|
5
|
+
export declare function isStdioMode(argv?: string[], env?: NodeJS.ProcessEnv): boolean;
|
|
6
|
+
export declare function resolveMcpHttpPort(argv?: string[], env?: NodeJS.ProcessEnv): number;
|
|
7
|
+
export type McpHttpServerHandle = {
|
|
8
|
+
port: number;
|
|
9
|
+
host: string;
|
|
10
|
+
close: () => Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
export declare function startMcpHttpServer(buildServer: () => McpServer, options?: {
|
|
13
|
+
port?: number;
|
|
14
|
+
host?: string;
|
|
15
|
+
serviceName?: string;
|
|
16
|
+
}): Promise<McpHttpServerHandle>;
|