@provos/ironcurtain 0.5.1 → 0.7.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/README.md +85 -66
- package/dist/cli-help.d.ts +63 -0
- package/dist/cli-help.js +102 -0
- package/dist/cli-help.js.map +1 -0
- package/dist/cli.js +78 -52
- package/dist/cli.js.map +1 -1
- package/dist/config/config-command.js +136 -2
- package/dist/config/config-command.js.map +1 -1
- package/dist/config/generated/tool-annotations.json +487 -338
- package/dist/config/index.d.ts +21 -1
- package/dist/config/index.js +12 -4
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-servers.json +2 -8
- package/dist/config/paths.d.ts +30 -0
- package/dist/config/paths.js +58 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/tool-description-hints.json +15 -0
- package/dist/config/types.d.ts +13 -0
- package/dist/config/user-config.d.ts +21 -0
- package/dist/config/user-config.js +8 -0
- package/dist/config/user-config.js.map +1 -1
- package/dist/cron/compile-task-policy.d.ts +17 -0
- package/dist/cron/compile-task-policy.js +39 -0
- package/dist/cron/compile-task-policy.js.map +1 -0
- package/dist/cron/cron-scheduler.d.ts +65 -0
- package/dist/cron/cron-scheduler.js +184 -0
- package/dist/cron/cron-scheduler.js.map +1 -0
- package/dist/cron/file-lock.d.ts +41 -0
- package/dist/cron/file-lock.js +156 -0
- package/dist/cron/file-lock.js.map +1 -0
- package/dist/cron/format-utils.d.ts +18 -0
- package/dist/cron/format-utils.js +145 -0
- package/dist/cron/format-utils.js.map +1 -0
- package/dist/cron/git-sync.d.ts +22 -0
- package/dist/cron/git-sync.js +121 -0
- package/dist/cron/git-sync.js.map +1 -0
- package/dist/cron/headless-transport.d.ts +27 -0
- package/dist/cron/headless-transport.js +43 -0
- package/dist/cron/headless-transport.js.map +1 -0
- package/dist/cron/job-commands.d.ts +39 -0
- package/dist/cron/job-commands.js +522 -0
- package/dist/cron/job-commands.js.map +1 -0
- package/dist/cron/job-store.d.ts +35 -0
- package/dist/cron/job-store.js +111 -0
- package/dist/cron/job-store.js.map +1 -0
- package/dist/cron/types.d.ts +127 -0
- package/dist/cron/types.js +25 -0
- package/dist/cron/types.js.map +1 -0
- package/dist/daemon/control-socket.d.ts +127 -0
- package/dist/daemon/control-socket.js +261 -0
- package/dist/daemon/control-socket.js.map +1 -0
- package/dist/daemon/daemon-command.d.ts +13 -0
- package/dist/daemon/daemon-command.js +230 -0
- package/dist/daemon/daemon-command.js.map +1 -0
- package/dist/daemon/ironcurtain-daemon.d.ts +90 -0
- package/dist/daemon/ironcurtain-daemon.js +548 -0
- package/dist/daemon/ironcurtain-daemon.js.map +1 -0
- package/dist/docker/adapters/claude-code.js +8 -48
- package/dist/docker/adapters/claude-code.js.map +1 -1
- package/dist/docker/adapters/goose.d.ts +58 -0
- package/dist/docker/adapters/goose.js +250 -0
- package/dist/docker/adapters/goose.js.map +1 -0
- package/dist/docker/adapters/shared-scripts.d.ts +29 -0
- package/dist/docker/adapters/shared-scripts.js +80 -0
- package/dist/docker/adapters/shared-scripts.js.map +1 -0
- package/dist/docker/agent-adapter.d.ts +12 -0
- package/dist/docker/agent-adapter.js.map +1 -1
- package/dist/docker/agent-registry.d.ts +6 -1
- package/dist/docker/agent-registry.js +10 -1
- package/dist/docker/agent-registry.js.map +1 -1
- package/dist/docker/docker-agent-session.d.ts +2 -25
- package/dist/docker/docker-agent-session.js +7 -106
- package/dist/docker/docker-agent-session.js.map +1 -1
- package/dist/docker/docker-infrastructure.d.ts +8 -0
- package/dist/docker/docker-infrastructure.js +22 -14
- package/dist/docker/docker-infrastructure.js.map +1 -1
- package/dist/docker/mitm-proxy.d.ts +5 -2
- package/dist/docker/mitm-proxy.js +169 -46
- package/dist/docker/mitm-proxy.js.map +1 -1
- package/dist/docker/oauth-credentials.d.ts +15 -2
- package/dist/docker/oauth-credentials.js +92 -8
- package/dist/docker/oauth-credentials.js.map +1 -1
- package/dist/docker/oauth-token-manager.d.ts +80 -0
- package/dist/docker/oauth-token-manager.js +133 -0
- package/dist/docker/oauth-token-manager.js.map +1 -0
- package/dist/docker/pty-session.d.ts +2 -0
- package/dist/docker/pty-session.js +17 -8
- package/dist/docker/pty-session.js.map +1 -1
- package/dist/escalation/escalation-watcher.d.ts +2 -0
- package/dist/escalation/escalation-watcher.js +5 -0
- package/dist/escalation/escalation-watcher.js.map +1 -1
- package/dist/escalation/listener-command.js +9 -58
- package/dist/escalation/listener-command.js.map +1 -1
- package/dist/escalation/listener-lock.d.ts +20 -0
- package/dist/escalation/listener-lock.js +69 -0
- package/dist/escalation/listener-lock.js.map +1 -0
- package/dist/escalation/session-registry.js +1 -14
- package/dist/escalation/session-registry.js.map +1 -1
- package/dist/index.js +51 -2
- package/dist/index.js.map +1 -1
- package/dist/mux/mux-app.d.ts +24 -0
- package/dist/mux/mux-app.js +450 -0
- package/dist/mux/mux-app.js.map +1 -0
- package/dist/mux/mux-command.d.ts +7 -0
- package/dist/mux/mux-command.js +104 -0
- package/dist/mux/mux-command.js.map +1 -0
- package/dist/mux/mux-escalation-manager.d.ts +48 -0
- package/dist/mux/mux-escalation-manager.js +162 -0
- package/dist/mux/mux-escalation-manager.js.map +1 -0
- package/dist/mux/mux-input-handler.d.ts +54 -0
- package/dist/mux/mux-input-handler.js +512 -0
- package/dist/mux/mux-input-handler.js.map +1 -0
- package/dist/mux/mux-renderer.d.ts +106 -0
- package/dist/mux/mux-renderer.js +850 -0
- package/dist/mux/mux-renderer.js.map +1 -0
- package/dist/mux/mux-splash.d.ts +17 -0
- package/dist/mux/mux-splash.js +323 -0
- package/dist/mux/mux-splash.js.map +1 -0
- package/dist/mux/paste-interceptor.d.ts +22 -0
- package/dist/mux/paste-interceptor.js +143 -0
- package/dist/mux/paste-interceptor.js.map +1 -0
- package/dist/mux/pty-bridge.d.ts +79 -0
- package/dist/mux/pty-bridge.js +151 -0
- package/dist/mux/pty-bridge.js.map +1 -0
- package/dist/mux/trusted-input.d.ts +27 -0
- package/dist/mux/trusted-input.js +27 -0
- package/dist/mux/trusted-input.js.map +1 -0
- package/dist/mux/types.d.ts +99 -0
- package/dist/mux/types.js +57 -0
- package/dist/mux/types.js.map +1 -0
- package/dist/pipeline/annotate.js +2 -1
- package/dist/pipeline/annotate.js.map +1 -1
- package/dist/pipeline/compile.d.ts +4 -34
- package/dist/pipeline/compile.js +29 -568
- package/dist/pipeline/compile.js.map +1 -1
- package/dist/pipeline/constitution-compiler.js +1 -1
- package/dist/pipeline/mcp-connections.d.ts +16 -0
- package/dist/pipeline/mcp-connections.js +61 -0
- package/dist/pipeline/mcp-connections.js.map +1 -0
- package/dist/pipeline/pipeline-runner.d.ts +86 -0
- package/dist/pipeline/pipeline-runner.js +554 -0
- package/dist/pipeline/pipeline-runner.js.map +1 -0
- package/dist/pipeline/pipeline-shared.d.ts +29 -2
- package/dist/pipeline/pipeline-shared.js +68 -12
- package/dist/pipeline/pipeline-shared.js.map +1 -1
- package/dist/pipeline/refresh-lists.js +38 -12
- package/dist/pipeline/refresh-lists.js.map +1 -1
- package/dist/pipeline/scenario-generator.js +2 -1
- package/dist/pipeline/scenario-generator.js.map +1 -1
- package/dist/pipeline/tool-annotator.d.ts +3 -3
- package/dist/pipeline/tool-annotator.js +96 -4
- package/dist/pipeline/tool-annotator.js.map +1 -1
- package/dist/pipeline/types.d.ts +52 -0
- package/dist/sandbox/index.js +40 -1
- package/dist/sandbox/index.js.map +1 -1
- package/dist/session/agent-session.d.ts +3 -0
- package/dist/session/agent-session.js +13 -1
- package/dist/session/agent-session.js.map +1 -1
- package/dist/session/index.js +65 -9
- package/dist/session/index.js.map +1 -1
- package/dist/session/preflight.js +26 -6
- package/dist/session/preflight.js.map +1 -1
- package/dist/session/prompts.d.ts +14 -0
- package/dist/session/prompts.js +39 -2
- package/dist/session/prompts.js.map +1 -1
- package/dist/session/session-manager.d.ts +105 -0
- package/dist/session/session-manager.js +134 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/session/types.d.ts +33 -0
- package/dist/session/workspace-validation.d.ts +19 -0
- package/dist/session/workspace-validation.js +66 -0
- package/dist/session/workspace-validation.js.map +1 -0
- package/dist/signal/bot-command.d.ts +2 -0
- package/dist/signal/bot-command.js +8 -0
- package/dist/signal/bot-command.js.map +1 -1
- package/dist/signal/format.d.ts +27 -0
- package/dist/signal/format.js +59 -0
- package/dist/signal/format.js.map +1 -1
- package/dist/signal/signal-bot-daemon.d.ts +27 -25
- package/dist/signal/signal-bot-daemon.js +145 -130
- package/dist/signal/signal-bot-daemon.js.map +1 -1
- package/dist/signal/signal-container.js +63 -19
- package/dist/signal/signal-container.js.map +1 -1
- package/dist/signal/signal-transport.js +3 -8
- package/dist/signal/signal-transport.js.map +1 -1
- package/dist/trusted-process/auto-approver.d.ts +13 -4
- package/dist/trusted-process/auto-approver.js +12 -5
- package/dist/trusted-process/auto-approver.js.map +1 -1
- package/dist/trusted-process/domain-utils.d.ts +38 -4
- package/dist/trusted-process/domain-utils.js +118 -11
- package/dist/trusted-process/domain-utils.js.map +1 -1
- package/dist/trusted-process/escalation.js +5 -0
- package/dist/trusted-process/escalation.js.map +1 -1
- package/dist/trusted-process/index.js +6 -2
- package/dist/trusted-process/index.js.map +1 -1
- package/dist/trusted-process/mcp-client-manager.js +11 -5
- package/dist/trusted-process/mcp-client-manager.js.map +1 -1
- package/dist/trusted-process/mcp-proxy-server.d.ts +2 -0
- package/dist/trusted-process/mcp-proxy-server.js +98 -32
- package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
- package/dist/trusted-process/permissive-output-validator.d.ts +23 -0
- package/dist/trusted-process/permissive-output-validator.js +10 -0
- package/dist/trusted-process/permissive-output-validator.js.map +1 -0
- package/dist/trusted-process/policy-engine.d.ts +27 -4
- package/dist/trusted-process/policy-engine.js +152 -57
- package/dist/trusted-process/policy-engine.js.map +1 -1
- package/dist/trusted-process/tool-description-hints.d.ts +19 -0
- package/dist/trusted-process/tool-description-hints.js +53 -0
- package/dist/trusted-process/tool-description-hints.js.map +1 -0
- package/dist/types/argument-roles.d.ts +33 -1
- package/dist/types/argument-roles.js +129 -1
- package/dist/types/argument-roles.js.map +1 -1
- package/docker/Dockerfile.goose +34 -0
- package/docker/entrypoint-goose.sh +30 -0
- package/package.json +6 -1
- package/src/config/generated/tool-annotations.json +487 -338
- package/src/config/mcp-servers.json +2 -8
|
@@ -9,10 +9,15 @@
|
|
|
9
9
|
* - Identity verification with TTL cache (5 min), fail-closed
|
|
10
10
|
* - Escalation state with race prevention (per-session)
|
|
11
11
|
* - Message sending via POST /v2/send with text_mode: "styled"
|
|
12
|
+
*
|
|
13
|
+
* Session state is owned by SessionManager (injected via constructor).
|
|
14
|
+
* This class only handles Signal-specific concerns: WebSocket, identity,
|
|
15
|
+
* message parsing, and command dispatch.
|
|
12
16
|
*/
|
|
13
17
|
import { type ResolvedSignalConfig } from './signal-config.js';
|
|
14
18
|
import type { SessionMode } from '../session/types.js';
|
|
15
19
|
import type { SignalContainerManager } from './signal-container.js';
|
|
20
|
+
import { SessionManager } from '../session/session-manager.js';
|
|
16
21
|
/**
|
|
17
22
|
* Signal message envelope received via WebSocket.
|
|
18
23
|
* Only the fields relevant to IronCurtain are typed here;
|
|
@@ -46,20 +51,19 @@ export interface SignalBotDaemonOptions {
|
|
|
46
51
|
readonly config: ResolvedSignalConfig;
|
|
47
52
|
readonly containerManager: SignalContainerManager;
|
|
48
53
|
readonly mode: SessionMode;
|
|
54
|
+
readonly sessionManager?: SessionManager;
|
|
49
55
|
}
|
|
50
56
|
export declare class SignalBotDaemon {
|
|
51
57
|
private config;
|
|
52
58
|
private readonly containerManager;
|
|
53
59
|
private readonly mode;
|
|
60
|
+
private readonly sessionManager;
|
|
54
61
|
private ws;
|
|
55
62
|
private baseUrl;
|
|
56
63
|
private closed;
|
|
57
64
|
private reconnectAttempts;
|
|
58
65
|
private static readonly MAX_RECONNECT_DELAY_MS;
|
|
59
66
|
private static readonly BASE_RECONNECT_DELAY_MS;
|
|
60
|
-
private sessions;
|
|
61
|
-
private currentLabel;
|
|
62
|
-
private nextLabel;
|
|
63
67
|
private readonly maxConcurrentSessions;
|
|
64
68
|
private identityLocked;
|
|
65
69
|
private lastIdentityCheckMs;
|
|
@@ -74,12 +78,23 @@ export declare class SignalBotDaemon {
|
|
|
74
78
|
*/
|
|
75
79
|
private scheduleSessionOp;
|
|
76
80
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
81
|
+
* Connects the daemon: starts the Docker container, waits for
|
|
82
|
+
* health, connects WebSocket, and sends the online greeting.
|
|
83
|
+
* Throws if any step fails (container won't start, health timeout, etc.).
|
|
84
|
+
*/
|
|
85
|
+
connect(): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Blocks until shutdown() is called (e.g., SIGTERM/SIGINT).
|
|
88
|
+
* Call connect() first to establish the connection.
|
|
89
|
+
*/
|
|
90
|
+
run(): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Convenience: connects and then blocks until shutdown.
|
|
93
|
+
* Used by the standalone `ironcurtain bot` command.
|
|
79
94
|
*/
|
|
80
95
|
start(): Promise<void>;
|
|
81
96
|
/**
|
|
82
|
-
* Initiates graceful shutdown. Ends all
|
|
97
|
+
* Initiates graceful shutdown. Ends all Signal sessions,
|
|
83
98
|
* closes the WebSocket, and unblocks start().
|
|
84
99
|
*/
|
|
85
100
|
shutdown(): Promise<void>;
|
|
@@ -93,12 +108,13 @@ export declare class SignalBotDaemon {
|
|
|
93
108
|
private scheduleReconnect;
|
|
94
109
|
private handleIncomingMessage;
|
|
95
110
|
/**
|
|
96
|
-
* Routes a user message to the current session. Creates a new
|
|
111
|
+
* Routes a user message to the current Signal session. Creates a new
|
|
97
112
|
* session if none exists. Handles BudgetExhaustedError by ending
|
|
98
113
|
* the exhausted session and notifying the user.
|
|
99
114
|
*
|
|
100
115
|
* Supports one-shot `#N` prefix routing: `#2 do something` routes
|
|
101
116
|
* "do something" to session #2 without changing currentLabel.
|
|
117
|
+
* Only Signal sessions accept forwarded messages.
|
|
102
118
|
*/
|
|
103
119
|
private routeToSession;
|
|
104
120
|
/**
|
|
@@ -107,34 +123,20 @@ export declare class SignalBotDaemon {
|
|
|
107
123
|
*/
|
|
108
124
|
private forwardToSession;
|
|
109
125
|
/**
|
|
110
|
-
* Creates a new session with a fresh SignalSessionTransport.
|
|
126
|
+
* Creates a new Signal session with a fresh SignalSessionTransport.
|
|
111
127
|
* Follows the same pattern as index.ts: create transport,
|
|
112
128
|
* wire callbacks, create session, start transport.
|
|
113
129
|
* Returns the label of the new session.
|
|
114
130
|
*/
|
|
115
131
|
private startNewSession;
|
|
116
|
-
/**
|
|
117
|
-
* Ends a specific session by label and cleans up.
|
|
118
|
-
* If it was the current session, auto-switches to the most recent remaining.
|
|
119
|
-
*/
|
|
120
|
-
endSession(label: number): Promise<void>;
|
|
121
|
-
/**
|
|
122
|
-
* Convenience method: ends the current session (if any).
|
|
123
|
-
*/
|
|
124
|
-
endCurrentSession(): Promise<void>;
|
|
125
|
-
/**
|
|
126
|
-
* Auto-switches currentLabel to the highest remaining label (most recent),
|
|
127
|
-
* or null if no sessions remain.
|
|
128
|
-
*/
|
|
129
|
-
private autoSwitchCurrent;
|
|
130
132
|
/**
|
|
131
133
|
* Checks if the message is an escalation reply.
|
|
132
134
|
* Accepts: approve, deny, /approve, /deny (case-insensitive).
|
|
133
135
|
* Optionally with a session label: "approve #2", "/approve 2".
|
|
134
136
|
*
|
|
135
|
-
* Routes to the session with a pending escalation.
|
|
136
|
-
*
|
|
137
|
-
*
|
|
137
|
+
* Routes to the session with a pending escalation.
|
|
138
|
+
* Works across ALL session types (signal + cron) so that
|
|
139
|
+
* `approve #3` from Signal can approve a cron job's escalation.
|
|
138
140
|
*/
|
|
139
141
|
private handleEscalationReply;
|
|
140
142
|
/** Called by SignalSessionTransport when the session surfaces an escalation. */
|