@cydm/happy-elves 0.1.0-beta.31 → 0.1.0-beta.310
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/apps/cli/dist/commands/app.js +10 -0
- package/apps/cli/dist/commands/daemon.js +92 -4
- package/apps/cli/dist/commands/gateway.d.ts +2 -0
- package/apps/cli/dist/commands/gateway.js +429 -0
- package/apps/cli/dist/commands/lib/args.js +49 -0
- package/apps/cli/dist/commands/lib/bootstrap-daemon.d.ts +2 -2
- package/apps/cli/dist/commands/lib/bootstrap-daemon.js +2 -2
- package/apps/cli/dist/commands/lib/doctor.d.ts +11 -0
- package/apps/cli/dist/commands/lib/doctor.js +276 -11
- package/apps/cli/dist/commands/lib/gateway-store.d.ts +38 -0
- package/apps/cli/dist/commands/lib/gateway-store.js +33 -0
- package/apps/cli/dist/commands/lib/index.d.ts +4 -2
- package/apps/cli/dist/commands/lib/index.js +2 -0
- package/apps/cli/dist/commands/lib/json.d.ts +2 -2
- package/apps/cli/dist/commands/lib/json.js +5 -2
- package/apps/cli/dist/commands/lib/local-daemon.d.ts +1 -0
- package/apps/cli/dist/commands/lib/local-daemon.js +14 -0
- package/apps/cli/dist/commands/lib/paths.d.ts +2 -0
- package/apps/cli/dist/commands/lib/paths.js +2 -0
- package/apps/cli/dist/commands/lib/relay-db-audit.d.ts +37 -0
- package/apps/cli/dist/commands/lib/relay-db-audit.js +300 -0
- package/apps/cli/dist/commands/lib/relay-http.d.ts +1 -1
- package/apps/cli/dist/commands/lib/scope.d.ts +1 -1
- package/apps/cli/dist/commands/lib/session-output.d.ts +15 -1
- package/apps/cli/dist/commands/lib/session-output.js +214 -6
- package/apps/cli/dist/commands/lib/session-view.d.ts +2 -2
- package/apps/cli/dist/commands/lib/status.js +5 -1
- package/apps/cli/dist/commands/lib/types.d.ts +4 -2
- package/apps/cli/dist/commands/lib/usage.js +123 -10
- package/apps/cli/dist/commands/lib/workspace.d.ts +2 -2
- package/apps/cli/dist/commands/lib/workspace.js +63 -10
- package/apps/cli/dist/commands/machine.js +50 -9
- package/apps/cli/dist/commands/memory.d.ts +2 -0
- package/apps/cli/dist/commands/memory.js +179 -0
- package/apps/cli/dist/commands/relay.js +29 -2
- package/apps/cli/dist/commands/release.d.ts +2 -0
- package/apps/cli/dist/commands/release.js +197 -0
- package/apps/cli/dist/commands/remote.js +10 -2
- package/apps/cli/dist/commands/schedule.d.ts +2 -0
- package/apps/cli/dist/commands/schedule.js +273 -0
- package/apps/cli/dist/commands/session.js +517 -5
- package/apps/cli/dist/commands/turn.js +225 -9
- package/apps/cli/dist/commands/workspace.d.ts +2 -0
- package/apps/cli/dist/commands/workspace.js +68 -0
- package/apps/cli/package.json +6 -0
- package/apps/daemon/dist/gateway/adapters.d.ts +38 -0
- package/apps/daemon/dist/gateway/adapters.js +2 -0
- package/apps/daemon/dist/gateway/feishu.d.ts +65 -0
- package/apps/daemon/dist/gateway/feishu.js +493 -0
- package/apps/daemon/dist/gateway/format.d.ts +2 -0
- package/apps/daemon/dist/gateway/format.js +19 -0
- package/apps/daemon/dist/gateway/handler.d.ts +7 -0
- package/apps/daemon/dist/gateway/handler.js +151 -0
- package/apps/daemon/dist/gateway/runtime.d.ts +33 -0
- package/apps/daemon/dist/gateway/runtime.js +850 -0
- package/apps/daemon/dist/gateway/store.d.ts +92 -0
- package/apps/daemon/dist/gateway/store.js +268 -0
- package/apps/daemon/dist/memory/handler.d.ts +7 -0
- package/apps/daemon/dist/memory/handler.js +105 -0
- package/apps/daemon/dist/memory/manager.d.ts +44 -0
- package/apps/daemon/dist/memory/manager.js +359 -0
- package/apps/daemon/dist/paths.d.ts +3 -0
- package/apps/daemon/dist/paths.js +3 -0
- package/apps/daemon/dist/relay/admission.d.ts +30 -0
- package/apps/daemon/dist/relay/admission.js +31 -0
- package/apps/daemon/dist/relay/connection.js +37 -1
- package/apps/daemon/dist/relay/devtools.d.ts +1 -1
- package/apps/daemon/dist/relay/register.js +2 -0
- package/apps/daemon/dist/relay/send.d.ts +2 -2
- package/apps/daemon/dist/relay/send.js +2 -0
- package/apps/daemon/dist/relay-http.d.ts +1 -1
- package/apps/daemon/dist/runtime/external-provider.d.ts +1 -1
- package/apps/daemon/dist/runtime/external-provider.js +187 -17
- package/apps/daemon/dist/runtime.d.ts +1 -2
- package/apps/daemon/dist/runtime.js +0 -3
- package/apps/daemon/dist/schedule/handler.d.ts +9 -0
- package/apps/daemon/dist/schedule/handler.js +148 -0
- package/apps/daemon/dist/schedule/runner.d.ts +21 -0
- package/apps/daemon/dist/schedule/runner.js +547 -0
- package/apps/daemon/dist/schedule/store.d.ts +9 -0
- package/apps/daemon/dist/schedule/store.js +143 -0
- package/apps/daemon/dist/session/create-session.d.ts +1 -1
- package/apps/daemon/dist/session/directory.d.ts +1 -1
- package/apps/daemon/dist/session/events.d.ts +15 -2
- package/apps/daemon/dist/session/events.js +76 -24
- package/apps/daemon/dist/session/file-preview.d.ts +1 -1
- package/apps/daemon/dist/session/lifecycle.d.ts +26 -3
- package/apps/daemon/dist/session/lifecycle.js +161 -22
- package/apps/daemon/dist/session/metadata.d.ts +2 -2
- package/apps/daemon/dist/session/metadata.js +42 -1
- package/apps/daemon/dist/session/primitives.d.ts +1 -1
- package/apps/daemon/dist/session/primitives.js +37 -6
- package/apps/daemon/dist/session/prompt.d.ts +28 -1
- package/apps/daemon/dist/session/prompt.js +340 -5
- package/apps/daemon/dist/session/reconcile.d.ts +3 -0
- package/apps/daemon/dist/session/reconcile.js +235 -0
- package/apps/daemon/dist/session/runtime-handle.d.ts +1 -1
- package/apps/daemon/dist/start.js +5 -1
- package/apps/daemon/dist/state.d.ts +2 -2
- package/apps/daemon/dist/turn-coordinator.d.ts +1 -0
- package/apps/daemon/dist/turn-coordinator.js +4 -0
- package/apps/daemon/dist/types.d.ts +16 -1
- package/apps/daemon/package.json +3 -25
- package/apps/relay/dist/connections.d.ts +2 -0
- package/apps/relay/dist/controller-handlers.d.ts +42 -2
- package/apps/relay/dist/controller-handlers.js +349 -37
- package/apps/relay/dist/db.js +296 -2
- package/apps/relay/dist/errors.d.ts +2 -1
- package/apps/relay/dist/errors.js +3 -1
- package/apps/relay/dist/http-routes.js +659 -33
- package/apps/relay/dist/http-schemas.d.ts +156 -0
- package/apps/relay/dist/http-schemas.js +85 -0
- package/apps/relay/dist/index.js +31 -1
- package/apps/relay/dist/machine-handlers.d.ts +15 -7
- package/apps/relay/dist/machine-handlers.js +567 -27
- package/apps/relay/dist/projections.d.ts +1 -1
- package/apps/relay/dist/projections.js +13 -0
- package/apps/relay/dist/relay-context.d.ts +41 -3
- package/apps/relay/dist/relay-context.js +244 -19
- package/apps/relay/dist/repositories.d.ts +2 -2
- package/apps/relay/dist/repositories.js +28 -1
- package/apps/relay/dist/runtime-bindings.d.ts +25 -0
- package/apps/relay/dist/runtime-bindings.js +49 -0
- package/apps/relay/dist/scope.d.ts +1 -1
- package/apps/relay/dist/types.d.ts +71 -1
- package/apps/relay/dist/websocket.js +2 -0
- package/package.json +5 -11
- package/packages/agent-sdk/dist/index.d.ts +80 -0
- package/packages/agent-sdk/dist/index.js +16 -0
- package/packages/client/dist/account.d.ts +35 -2
- package/packages/client/dist/account.js +98 -1
- package/packages/client/dist/client.d.ts +59 -6
- package/packages/client/dist/client.js +312 -58
- package/packages/client/dist/index.d.ts +1 -1
- package/packages/client/dist/parsers.d.ts +28 -2
- package/packages/client/dist/parsers.js +167 -0
- package/packages/client/dist/transport.d.ts +21 -1
- package/packages/client/dist/transport.js +69 -6
- package/packages/client/dist/types.d.ts +177 -1
- package/packages/client/dist/validation.d.ts +1 -1
- package/packages/runtime/dist/index.d.ts +66 -0
- package/packages/runtime-acpx/dist/index.d.ts +1 -1
- package/packages/runtime-acpx/dist/index.js +8 -0
- package/packages/runtime-cli/dist/claude-history.d.ts +1 -2
- package/packages/runtime-cli/dist/claude-history.js +0 -3
- package/packages/runtime-cli/dist/claude-session-store.d.ts +0 -1
- package/packages/runtime-cli/dist/claude-session-store.js +1 -1
- package/packages/runtime-cli/dist/claude-turn.d.ts +2 -1
- package/packages/runtime-cli/dist/claude-turn.js +29 -9
- package/packages/runtime-cli/dist/codex-app-server.d.ts +8 -3
- package/packages/runtime-cli/dist/codex-app-server.js +122 -25
- package/packages/runtime-cli/dist/codex-history.d.ts +1 -2
- package/packages/runtime-cli/dist/codex-history.js +11 -5
- package/packages/runtime-cli/dist/codex-protocol.d.ts +2 -2
- package/packages/runtime-cli/dist/codex-protocol.js +4 -4
- package/packages/runtime-cli/dist/history-merge.d.ts +1 -1
- package/packages/runtime-cli/dist/index.d.ts +1 -1
- package/packages/runtime-cli/dist/index.js +108 -2
- package/packages/runtime-cli/dist/permissions.d.ts +1 -1
- package/packages/runtime-cli/dist/session-store.d.ts +2 -1
- package/packages/runtime-cli/dist/session-store.js +9 -8
- package/packages/shared/dist/index.d.ts +2 -0
- package/packages/shared/dist/index.js +2 -0
- package/packages/shared/dist/protocol-schemas.d.ts +1077 -0
- package/packages/shared/dist/protocol-schemas.js +273 -0
- package/packages/shared/dist/protocol-types.d.ts +371 -3
- package/packages/shared/dist/protocol.d.ts +181 -2
- package/packages/shared/dist/protocol.js +197 -1
- package/packages/shared/dist/session-tags.d.ts +12 -0
- package/packages/shared/dist/session-tags.js +50 -0
- package/apps/cli/dist/commands/account.js.map +0 -1
- package/apps/cli/dist/commands/app.js.map +0 -1
- package/apps/cli/dist/commands/collect.js.map +0 -1
- package/apps/cli/dist/commands/command.js.map +0 -1
- package/apps/cli/dist/commands/config.js.map +0 -1
- package/apps/cli/dist/commands/daemon.js.map +0 -1
- package/apps/cli/dist/commands/lib/args.js.map +0 -1
- package/apps/cli/dist/commands/lib/audit.js.map +0 -1
- package/apps/cli/dist/commands/lib/bootstrap-config.js.map +0 -1
- package/apps/cli/dist/commands/lib/bootstrap-daemon.js.map +0 -1
- package/apps/cli/dist/commands/lib/bootstrap-output.js.map +0 -1
- package/apps/cli/dist/commands/lib/bootstrap.js.map +0 -1
- package/apps/cli/dist/commands/lib/config.js.map +0 -1
- package/apps/cli/dist/commands/lib/doctor.js.map +0 -1
- package/apps/cli/dist/commands/lib/exit.js.map +0 -1
- package/apps/cli/dist/commands/lib/index.js.map +0 -1
- package/apps/cli/dist/commands/lib/json.js.map +0 -1
- package/apps/cli/dist/commands/lib/local-daemon.js.map +0 -1
- package/apps/cli/dist/commands/lib/loop-store.js.map +0 -1
- package/apps/cli/dist/commands/lib/paths.js.map +0 -1
- package/apps/cli/dist/commands/lib/relay-http.js.map +0 -1
- package/apps/cli/dist/commands/lib/scope.js.map +0 -1
- package/apps/cli/dist/commands/lib/session-output.js.map +0 -1
- package/apps/cli/dist/commands/lib/session-view.js.map +0 -1
- package/apps/cli/dist/commands/lib/status.js.map +0 -1
- package/apps/cli/dist/commands/lib/types.js.map +0 -1
- package/apps/cli/dist/commands/lib/usage.js.map +0 -1
- package/apps/cli/dist/commands/lib/workspace.js.map +0 -1
- package/apps/cli/dist/commands/loop.js.map +0 -1
- package/apps/cli/dist/commands/machine.js.map +0 -1
- package/apps/cli/dist/commands/relay.js.map +0 -1
- package/apps/cli/dist/commands/remote.js.map +0 -1
- package/apps/cli/dist/commands/session.js.map +0 -1
- package/apps/cli/dist/commands/token.js.map +0 -1
- package/apps/cli/dist/commands/turn.js.map +0 -1
- package/apps/cli/dist/errors.js.map +0 -1
- package/apps/cli/dist/index.js.map +0 -1
- package/apps/daemon/dist/app.js.map +0 -1
- package/apps/daemon/dist/args.js.map +0 -1
- package/apps/daemon/dist/audit.js.map +0 -1
- package/apps/daemon/dist/cli.js.map +0 -1
- package/apps/daemon/dist/config.js.map +0 -1
- package/apps/daemon/dist/errors.js.map +0 -1
- package/apps/daemon/dist/loop/runner.js.map +0 -1
- package/apps/daemon/dist/loop/store.js.map +0 -1
- package/apps/daemon/dist/pair.js.map +0 -1
- package/apps/daemon/dist/paths.js.map +0 -1
- package/apps/daemon/dist/process.js.map +0 -1
- package/apps/daemon/dist/relay/connection.js.map +0 -1
- package/apps/daemon/dist/relay/devtools.js.map +0 -1
- package/apps/daemon/dist/relay/register.js.map +0 -1
- package/apps/daemon/dist/relay/send.js.map +0 -1
- package/apps/daemon/dist/relay-http.js.map +0 -1
- package/apps/daemon/dist/runtime/external-provider.js.map +0 -1
- package/apps/daemon/dist/runtime.js.map +0 -1
- package/apps/daemon/dist/session/create-session.js.map +0 -1
- package/apps/daemon/dist/session/directory.js.map +0 -1
- package/apps/daemon/dist/session/events.js.map +0 -1
- package/apps/daemon/dist/session/file-preview.js.map +0 -1
- package/apps/daemon/dist/session/lifecycle.js.map +0 -1
- package/apps/daemon/dist/session/metadata.js.map +0 -1
- package/apps/daemon/dist/session/primitives.js.map +0 -1
- package/apps/daemon/dist/session/prompt.js.map +0 -1
- package/apps/daemon/dist/session/runtime-handle.js.map +0 -1
- package/apps/daemon/dist/start.js.map +0 -1
- package/apps/daemon/dist/state.js.map +0 -1
- package/apps/daemon/dist/turn-coordinator.js.map +0 -1
- package/apps/daemon/dist/types.js.map +0 -1
- package/apps/daemon/dist/utils.js.map +0 -1
- package/apps/relay/dist/auth.js.map +0 -1
- package/apps/relay/dist/connections.js.map +0 -1
- package/apps/relay/dist/controller-handlers.js.map +0 -1
- package/apps/relay/dist/db.js.map +0 -1
- package/apps/relay/dist/errors.js.map +0 -1
- package/apps/relay/dist/http-routes.js.map +0 -1
- package/apps/relay/dist/http-schemas.js.map +0 -1
- package/apps/relay/dist/index.js.map +0 -1
- package/apps/relay/dist/machine-handlers.js.map +0 -1
- package/apps/relay/dist/projections.js.map +0 -1
- package/apps/relay/dist/relay-context.js.map +0 -1
- package/apps/relay/dist/repositories.js.map +0 -1
- package/apps/relay/dist/retention.js.map +0 -1
- package/apps/relay/dist/scope.js.map +0 -1
- package/apps/relay/dist/security.js.map +0 -1
- package/apps/relay/dist/types.js.map +0 -1
- package/apps/relay/dist/websocket.js.map +0 -1
- package/apps/relay/package.json +0 -29
- package/packages/agent-sdk/dist/index.d.ts.map +0 -1
- package/packages/agent-sdk/dist/index.js.map +0 -1
- package/packages/agent-sdk/package.json +0 -20
- package/packages/client/dist/account.d.ts.map +0 -1
- package/packages/client/dist/account.js.map +0 -1
- package/packages/client/dist/client.d.ts.map +0 -1
- package/packages/client/dist/client.js.map +0 -1
- package/packages/client/dist/errors.d.ts.map +0 -1
- package/packages/client/dist/errors.js.map +0 -1
- package/packages/client/dist/http.d.ts.map +0 -1
- package/packages/client/dist/http.js.map +0 -1
- package/packages/client/dist/index.d.ts.map +0 -1
- package/packages/client/dist/index.js.map +0 -1
- package/packages/client/dist/parsers.d.ts.map +0 -1
- package/packages/client/dist/parsers.js.map +0 -1
- package/packages/client/dist/transport.d.ts.map +0 -1
- package/packages/client/dist/transport.js.map +0 -1
- package/packages/client/dist/types.d.ts.map +0 -1
- package/packages/client/dist/types.js.map +0 -1
- package/packages/client/dist/validation.d.ts.map +0 -1
- package/packages/client/dist/validation.js.map +0 -1
- package/packages/client/package.json +0 -22
- package/packages/pie-provider/dist/index.d.ts.map +0 -1
- package/packages/pie-provider/dist/index.js.map +0 -1
- package/packages/pie-provider/package.json +0 -26
- package/packages/runtime/dist/index.d.ts.map +0 -1
- package/packages/runtime/dist/index.js.map +0 -1
- package/packages/runtime/package.json +0 -19
- package/packages/runtime-acpx/dist/index.d.ts.map +0 -1
- package/packages/runtime-acpx/dist/index.js.map +0 -1
- package/packages/runtime-acpx/package.json +0 -23
- package/packages/runtime-cli/dist/async-queue.d.ts.map +0 -1
- package/packages/runtime-cli/dist/async-queue.js.map +0 -1
- package/packages/runtime-cli/dist/claude-history.d.ts.map +0 -1
- package/packages/runtime-cli/dist/claude-history.js.map +0 -1
- package/packages/runtime-cli/dist/claude-json.d.ts.map +0 -1
- package/packages/runtime-cli/dist/claude-json.js.map +0 -1
- package/packages/runtime-cli/dist/claude-rename.d.ts.map +0 -1
- package/packages/runtime-cli/dist/claude-rename.js.map +0 -1
- package/packages/runtime-cli/dist/claude-session-store.d.ts.map +0 -1
- package/packages/runtime-cli/dist/claude-session-store.js.map +0 -1
- package/packages/runtime-cli/dist/claude-turn.d.ts.map +0 -1
- package/packages/runtime-cli/dist/claude-turn.js.map +0 -1
- package/packages/runtime-cli/dist/codex-app-server.d.ts.map +0 -1
- package/packages/runtime-cli/dist/codex-app-server.js.map +0 -1
- package/packages/runtime-cli/dist/codex-approvals.d.ts.map +0 -1
- package/packages/runtime-cli/dist/codex-approvals.js.map +0 -1
- package/packages/runtime-cli/dist/codex-history.d.ts.map +0 -1
- package/packages/runtime-cli/dist/codex-history.js.map +0 -1
- package/packages/runtime-cli/dist/codex-json-rpc.d.ts.map +0 -1
- package/packages/runtime-cli/dist/codex-json-rpc.js.map +0 -1
- package/packages/runtime-cli/dist/codex-lifecycle.d.ts.map +0 -1
- package/packages/runtime-cli/dist/codex-lifecycle.js.map +0 -1
- package/packages/runtime-cli/dist/codex-protocol.d.ts.map +0 -1
- package/packages/runtime-cli/dist/codex-protocol.js.map +0 -1
- package/packages/runtime-cli/dist/command-resolver.d.ts.map +0 -1
- package/packages/runtime-cli/dist/command-resolver.js.map +0 -1
- package/packages/runtime-cli/dist/history-merge.d.ts.map +0 -1
- package/packages/runtime-cli/dist/history-merge.js.map +0 -1
- package/packages/runtime-cli/dist/index.d.ts.map +0 -1
- package/packages/runtime-cli/dist/index.js.map +0 -1
- package/packages/runtime-cli/dist/permissions.d.ts.map +0 -1
- package/packages/runtime-cli/dist/permissions.js.map +0 -1
- package/packages/runtime-cli/dist/session-store.d.ts.map +0 -1
- package/packages/runtime-cli/dist/session-store.js.map +0 -1
- package/packages/runtime-cli/package.json +0 -22
- package/packages/shared/dist/args.d.ts.map +0 -1
- package/packages/shared/dist/args.js.map +0 -1
- package/packages/shared/dist/crypto.d.ts.map +0 -1
- package/packages/shared/dist/crypto.js.map +0 -1
- package/packages/shared/dist/ids.d.ts.map +0 -1
- package/packages/shared/dist/ids.js.map +0 -1
- package/packages/shared/dist/index.d.ts.map +0 -1
- package/packages/shared/dist/index.js.map +0 -1
- package/packages/shared/dist/protocol-schemas.d.ts.map +0 -1
- package/packages/shared/dist/protocol-schemas.js.map +0 -1
- package/packages/shared/dist/protocol-types.d.ts.map +0 -1
- package/packages/shared/dist/protocol-types.js.map +0 -1
- package/packages/shared/dist/protocol.d.ts.map +0 -1
- package/packages/shared/dist/protocol.js.map +0 -1
- package/packages/shared/dist/session-name.d.ts.map +0 -1
- package/packages/shared/dist/session-name.js.map +0 -1
- package/packages/shared/dist/session-state.d.ts.map +0 -1
- package/packages/shared/dist/session-state.js.map +0 -1
- package/packages/shared/package.json +0 -24
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SessionSnapshot } from "
|
|
1
|
+
import type { SessionSnapshot } from "../../../packages/shared/dist/index.js";
|
|
2
2
|
export type TokenKind = "controller" | "machine";
|
|
3
3
|
export type ScopedTokenScope = {
|
|
4
4
|
name?: string;
|
|
@@ -18,6 +18,7 @@ export type TokenRecord = {
|
|
|
18
18
|
revoked_at: number | null;
|
|
19
19
|
expires_at: number | null;
|
|
20
20
|
scope: string | null;
|
|
21
|
+
last_seen: number | null;
|
|
21
22
|
created_at: number;
|
|
22
23
|
};
|
|
23
24
|
export type MachineRow = {
|
|
@@ -41,6 +42,10 @@ export type SessionRow = {
|
|
|
41
42
|
encrypted_metadata: string | null;
|
|
42
43
|
current_head: string | null;
|
|
43
44
|
last_turn_id: string | null;
|
|
45
|
+
head_basis_event_id: number | null;
|
|
46
|
+
head_basis_message_id: string | null;
|
|
47
|
+
head_basis_logical_time: number | null;
|
|
48
|
+
head_basis_turn_seq: number | null;
|
|
44
49
|
source_session_id: string | null;
|
|
45
50
|
source_checkpoint_id: string | null;
|
|
46
51
|
created_at: number;
|
|
@@ -59,12 +64,77 @@ export type EventRow = {
|
|
|
59
64
|
created_at: number;
|
|
60
65
|
occurred_at: number | null;
|
|
61
66
|
};
|
|
67
|
+
export type PendingSessionHeadAdvanceRow = {
|
|
68
|
+
id: number;
|
|
69
|
+
account_id: string;
|
|
70
|
+
session_id: string;
|
|
71
|
+
machine_id: string;
|
|
72
|
+
message_id: string | null;
|
|
73
|
+
current_head: string;
|
|
74
|
+
last_turn_id: string;
|
|
75
|
+
basis_turn_id: string;
|
|
76
|
+
basis_event_message_id: string;
|
|
77
|
+
basis_turn_seq: number;
|
|
78
|
+
basis_occurred_at: number | null;
|
|
79
|
+
encrypted_metadata: string | null;
|
|
80
|
+
created_at: number;
|
|
81
|
+
updated_at: number;
|
|
82
|
+
};
|
|
62
83
|
export type CommandResultRow = {
|
|
63
84
|
account_id: string;
|
|
64
85
|
request_id: string;
|
|
65
86
|
response: string;
|
|
66
87
|
created_at: number;
|
|
67
88
|
};
|
|
89
|
+
export type RelayAdmissionRow = {
|
|
90
|
+
account_id: string;
|
|
91
|
+
request_id: string;
|
|
92
|
+
session_id: string;
|
|
93
|
+
machine_id: string;
|
|
94
|
+
kind: "createSession" | "prompt";
|
|
95
|
+
turn_id: string | null;
|
|
96
|
+
admission: "accepted";
|
|
97
|
+
dispatch: "queued" | "delivered";
|
|
98
|
+
started_at: number | null;
|
|
99
|
+
finished_at: number | null;
|
|
100
|
+
terminal_status: "completed" | "cancelled" | "failed" | "error" | "unknown" | null;
|
|
101
|
+
last_error_code: string | null;
|
|
102
|
+
created_at: number;
|
|
103
|
+
updated_at: number;
|
|
104
|
+
};
|
|
105
|
+
export type RelaySessionClaimRow = {
|
|
106
|
+
account_id: string;
|
|
107
|
+
session_id: string;
|
|
108
|
+
request_id: string;
|
|
109
|
+
machine_id: string;
|
|
110
|
+
turn_id: string;
|
|
111
|
+
command_type: "prompt";
|
|
112
|
+
state: "active";
|
|
113
|
+
created_at: number;
|
|
114
|
+
updated_at: number;
|
|
115
|
+
};
|
|
116
|
+
export type SessionRuntimeBindingRow = {
|
|
117
|
+
account_id: string;
|
|
118
|
+
machine_id: string;
|
|
119
|
+
agent: string;
|
|
120
|
+
runtime_session_id: string;
|
|
121
|
+
session_id: string;
|
|
122
|
+
status: "active" | "closed";
|
|
123
|
+
created_at: number;
|
|
124
|
+
updated_at: number;
|
|
125
|
+
};
|
|
126
|
+
export type RelayDispatchOutboxRow = {
|
|
127
|
+
account_id: string;
|
|
128
|
+
request_id: string;
|
|
129
|
+
machine_id: string;
|
|
130
|
+
session_id: string;
|
|
131
|
+
command_type: string;
|
|
132
|
+
message: string;
|
|
133
|
+
state: "queued" | "delivered";
|
|
134
|
+
created_at: number;
|
|
135
|
+
updated_at: number;
|
|
136
|
+
delivered_at: number | null;
|
|
137
|
+
};
|
|
68
138
|
export type PairingRow = {
|
|
69
139
|
code: string;
|
|
70
140
|
account_id: string;
|
|
@@ -50,6 +50,7 @@ export function registerWebsocketRoute(app, context, originAllowed) {
|
|
|
50
50
|
fail("Machine token does not match machine id", "AUTH_TOKEN_INVALID");
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
|
+
context.markTokenSeen(token.token);
|
|
53
54
|
if (message.clientType === "controller") {
|
|
54
55
|
const controller = {
|
|
55
56
|
id: connectionId,
|
|
@@ -84,6 +85,7 @@ export function registerWebsocketRoute(app, context, originAllowed) {
|
|
|
84
85
|
const machineSnapshotNow = context.updateMachineLastSeen(machine.accountId, machine.machineId);
|
|
85
86
|
if (machineSnapshotNow)
|
|
86
87
|
context.broadcastControllers(machine.accountId, { type: "server:machine", machine: machineSnapshotNow });
|
|
88
|
+
context.deliverQueuedCommandsForMachine(machine);
|
|
87
89
|
context.resumeOfflineSessionsForMachine(machine);
|
|
88
90
|
}
|
|
89
91
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cydm/happy-elves",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.310",
|
|
4
4
|
"description": "Remote controller for local coding agents with hosted or self-hosted relay support.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,24 +10,17 @@
|
|
|
10
10
|
"LICENSE",
|
|
11
11
|
"README.md",
|
|
12
12
|
"apps/cli/dist",
|
|
13
|
+
"apps/cli/package.json",
|
|
13
14
|
"apps/daemon/dist",
|
|
14
15
|
"apps/daemon/package.json",
|
|
15
16
|
"apps/relay/dist",
|
|
16
|
-
"apps/relay/package.json",
|
|
17
17
|
"packages/shared/dist",
|
|
18
|
-
"packages/shared/package.json",
|
|
19
18
|
"packages/client/dist",
|
|
20
|
-
"packages/client/package.json",
|
|
21
19
|
"packages/runtime/dist",
|
|
22
|
-
"packages/runtime/package.json",
|
|
23
20
|
"packages/runtime-acpx/dist",
|
|
24
|
-
"packages/runtime-acpx/package.json",
|
|
25
21
|
"packages/runtime-cli/dist",
|
|
26
|
-
"packages/runtime-cli/package.json",
|
|
27
22
|
"packages/agent-sdk/dist",
|
|
28
|
-
"packages/
|
|
29
|
-
"packages/pie-provider/dist",
|
|
30
|
-
"packages/pie-provider/package.json"
|
|
23
|
+
"packages/pie-provider/dist"
|
|
31
24
|
],
|
|
32
25
|
"engines": {
|
|
33
26
|
"node": ">=24.2.0"
|
|
@@ -35,9 +28,10 @@
|
|
|
35
28
|
"dependencies": {
|
|
36
29
|
"@fastify/cors": "^11.1.0",
|
|
37
30
|
"@fastify/websocket": "^11.0.2",
|
|
31
|
+
"@larksuiteoapi/node-sdk": "^1.72.0",
|
|
38
32
|
"@noble/ciphers": "^2.2.0",
|
|
39
33
|
"@noble/hashes": "^2.2.0",
|
|
40
|
-
"acpx": "^0.
|
|
34
|
+
"acpx": "^0.13.0",
|
|
41
35
|
"fastify": "^5.6.2",
|
|
42
36
|
"zod": "^4.4.2"
|
|
43
37
|
},
|
|
@@ -18,6 +18,13 @@ export type AgentProfile = {
|
|
|
18
18
|
label: string;
|
|
19
19
|
command?: string;
|
|
20
20
|
historyModel?: "append-only" | "authoritative-linear";
|
|
21
|
+
defaultModel?: string;
|
|
22
|
+
models?: Array<{
|
|
23
|
+
id: string;
|
|
24
|
+
label?: string;
|
|
25
|
+
unavailable?: boolean;
|
|
26
|
+
reason?: string;
|
|
27
|
+
}>;
|
|
21
28
|
capabilities?: AgentCapability;
|
|
22
29
|
};
|
|
23
30
|
export type ProviderInfo = {
|
|
@@ -30,12 +37,20 @@ export type RuntimeHandle = {
|
|
|
30
37
|
agent: string;
|
|
31
38
|
sessionId: string;
|
|
32
39
|
cwd?: string;
|
|
40
|
+
model?: string;
|
|
33
41
|
opaque?: Record<string, unknown>;
|
|
34
42
|
};
|
|
35
43
|
export type RuntimeAttachment = {
|
|
44
|
+
name?: string;
|
|
36
45
|
mediaType: string;
|
|
46
|
+
sizeBytes?: number;
|
|
37
47
|
data: string;
|
|
38
48
|
};
|
|
49
|
+
export type RuntimeOptionChoice = {
|
|
50
|
+
id: string;
|
|
51
|
+
label: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
};
|
|
39
54
|
export type RuntimeEvent = {
|
|
40
55
|
type: "text_delta";
|
|
41
56
|
text: string;
|
|
@@ -47,6 +62,16 @@ export type RuntimeEvent = {
|
|
|
47
62
|
tag?: string;
|
|
48
63
|
used?: number;
|
|
49
64
|
size?: number;
|
|
65
|
+
} | {
|
|
66
|
+
type: "session_usage";
|
|
67
|
+
source: "provider" | "estimated";
|
|
68
|
+
usedTokens: number;
|
|
69
|
+
contextWindowTokens?: number;
|
|
70
|
+
inputTokens?: number;
|
|
71
|
+
outputTokens?: number;
|
|
72
|
+
cachedInputTokens?: number;
|
|
73
|
+
reasoningOutputTokens?: number;
|
|
74
|
+
totalTokens?: number;
|
|
50
75
|
} | {
|
|
51
76
|
type: "tool_call";
|
|
52
77
|
text: string;
|
|
@@ -54,6 +79,13 @@ export type RuntimeEvent = {
|
|
|
54
79
|
toolCallId?: string;
|
|
55
80
|
status?: string;
|
|
56
81
|
title?: string;
|
|
82
|
+
} | {
|
|
83
|
+
type: "option_request";
|
|
84
|
+
optionRequestId: string;
|
|
85
|
+
title?: string;
|
|
86
|
+
message: string;
|
|
87
|
+
options: RuntimeOptionChoice[];
|
|
88
|
+
allowFreeText?: boolean;
|
|
57
89
|
} | {
|
|
58
90
|
type: "done";
|
|
59
91
|
stopReason?: string;
|
|
@@ -85,6 +117,26 @@ export type RuntimeTurnResult = {
|
|
|
85
117
|
retryable?: boolean;
|
|
86
118
|
};
|
|
87
119
|
};
|
|
120
|
+
export type RuntimeTurnInspection = {
|
|
121
|
+
status: "active";
|
|
122
|
+
currentHead?: string;
|
|
123
|
+
lastTurnId?: string;
|
|
124
|
+
providerTurnId?: string;
|
|
125
|
+
evidence?: string;
|
|
126
|
+
} | {
|
|
127
|
+
status: "terminal";
|
|
128
|
+
terminalStatus: "completed" | "cancelled" | "failed";
|
|
129
|
+
currentHead?: string;
|
|
130
|
+
lastTurnId?: string;
|
|
131
|
+
providerTurnId?: string;
|
|
132
|
+
error?: string;
|
|
133
|
+
evidence?: string;
|
|
134
|
+
} | {
|
|
135
|
+
status: "unknown" | "not_found" | "uninspectable";
|
|
136
|
+
providerTurnId?: string;
|
|
137
|
+
reason?: string;
|
|
138
|
+
evidence?: string;
|
|
139
|
+
};
|
|
88
140
|
export interface RuntimeTurn {
|
|
89
141
|
readonly requestId: string;
|
|
90
142
|
readonly events: AsyncIterable<RuntimeEvent>;
|
|
@@ -92,6 +144,11 @@ export interface RuntimeTurn {
|
|
|
92
144
|
cancel(input?: {
|
|
93
145
|
reason?: string;
|
|
94
146
|
}): Promise<void>;
|
|
147
|
+
respondOption?(input: {
|
|
148
|
+
optionRequestId: string;
|
|
149
|
+
selectedOptionId?: string;
|
|
150
|
+
text?: string;
|
|
151
|
+
}): Promise<void>;
|
|
95
152
|
closeStream(input?: {
|
|
96
153
|
reason?: string;
|
|
97
154
|
}): Promise<void>;
|
|
@@ -174,6 +231,7 @@ export interface HappyElvesAgentProvider {
|
|
|
174
231
|
resumeHandle?: RuntimeHandle;
|
|
175
232
|
cwd?: string;
|
|
176
233
|
permissionMode?: PermissionMode;
|
|
234
|
+
model?: string;
|
|
177
235
|
restartableEmptySession?: boolean;
|
|
178
236
|
}): Promise<RuntimeHandle>;
|
|
179
237
|
startTurn(input: {
|
|
@@ -182,6 +240,7 @@ export interface HappyElvesAgentProvider {
|
|
|
182
240
|
attachments?: RuntimeAttachment[];
|
|
183
241
|
mode: PromptMode;
|
|
184
242
|
permissionMode?: PermissionMode;
|
|
243
|
+
model?: string;
|
|
185
244
|
requestId: string;
|
|
186
245
|
timeoutMs?: number;
|
|
187
246
|
signal?: AbortSignal;
|
|
@@ -195,6 +254,12 @@ export interface HappyElvesAgentProvider {
|
|
|
195
254
|
reason: string;
|
|
196
255
|
discardPersistentState?: boolean;
|
|
197
256
|
}): Promise<void>;
|
|
257
|
+
inspectTurn?(input: {
|
|
258
|
+
handle: RuntimeHandle;
|
|
259
|
+
turnId?: string;
|
|
260
|
+
providerTurnId?: string;
|
|
261
|
+
requestId?: string;
|
|
262
|
+
}): Promise<RuntimeTurnInspection>;
|
|
198
263
|
listHistoricalSessions?(input: {
|
|
199
264
|
agent?: string;
|
|
200
265
|
cwd?: string;
|
|
@@ -265,6 +330,16 @@ export type ProviderRequest = {
|
|
|
265
330
|
id: string;
|
|
266
331
|
method: "startTurn";
|
|
267
332
|
params: Omit<Parameters<HappyElvesAgentProvider["startTurn"]>[0], "signal">;
|
|
333
|
+
} | {
|
|
334
|
+
type: "request";
|
|
335
|
+
id: string;
|
|
336
|
+
method: "respondOption";
|
|
337
|
+
params: {
|
|
338
|
+
handle: RuntimeHandle;
|
|
339
|
+
optionRequestId: string;
|
|
340
|
+
selectedOptionId?: string;
|
|
341
|
+
text?: string;
|
|
342
|
+
};
|
|
268
343
|
} | {
|
|
269
344
|
type: "request";
|
|
270
345
|
id: string;
|
|
@@ -275,6 +350,11 @@ export type ProviderRequest = {
|
|
|
275
350
|
id: string;
|
|
276
351
|
method: "close";
|
|
277
352
|
params: Parameters<HappyElvesAgentProvider["close"]>[0];
|
|
353
|
+
} | {
|
|
354
|
+
type: "request";
|
|
355
|
+
id: string;
|
|
356
|
+
method: "inspectTurn";
|
|
357
|
+
params: Parameters<NonNullable<HappyElvesAgentProvider["inspectTurn"]>>[0];
|
|
278
358
|
} | {
|
|
279
359
|
type: "request";
|
|
280
360
|
id: string;
|
|
@@ -68,6 +68,18 @@ async function dispatchRequest(provider, request, activeTurns) {
|
|
|
68
68
|
switch (request.method) {
|
|
69
69
|
case "startTurn":
|
|
70
70
|
throw new ProviderError("INTERNAL_ERROR", "startTurn must be handled by the streaming dispatcher");
|
|
71
|
+
case "respondOption":
|
|
72
|
+
{
|
|
73
|
+
const activeTurn = activeTurns.get(runtimeHandleKey(request.params.handle));
|
|
74
|
+
if (!activeTurn?.respondOption)
|
|
75
|
+
throw new ProviderError("UNSUPPORTED", "respondOption is not supported by this active turn");
|
|
76
|
+
await activeTurn.respondOption({
|
|
77
|
+
optionRequestId: request.params.optionRequestId,
|
|
78
|
+
selectedOptionId: request.params.selectedOptionId,
|
|
79
|
+
text: request.params.text,
|
|
80
|
+
});
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
71
83
|
case "getProviderInfo":
|
|
72
84
|
return provider.getProviderInfo();
|
|
73
85
|
case "listAgents":
|
|
@@ -85,6 +97,10 @@ async function dispatchRequest(provider, request, activeTurns) {
|
|
|
85
97
|
return provider.cancel(request.params);
|
|
86
98
|
case "close":
|
|
87
99
|
return provider.close(request.params);
|
|
100
|
+
case "inspectTurn":
|
|
101
|
+
if (!provider.inspectTurn)
|
|
102
|
+
throw new ProviderError("UNSUPPORTED", "inspectTurn is not supported");
|
|
103
|
+
return provider.inspectTurn(request.params);
|
|
88
104
|
case "listHistoricalSessions":
|
|
89
105
|
if (!provider.listHistoricalSessions)
|
|
90
106
|
throw new ProviderError("UNSUPPORTED", "listHistoricalSessions is not supported");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type PairingStartResponse } from "
|
|
2
|
-
import type { AddControllerDeviceInput, AddControllerDeviceResult, ControllerClientConfig, ControllerInviteClaimInput, ControllerInviteClaimResult, ControllerInviteCreateInput, ControllerInviteCreateResult, CreateScopedTokenInput, DeviceListResponse, ScopedTokenInfo, ScopedTokenSelf } from "./types.js";
|
|
1
|
+
import { type PairingStartResponse } from "../../shared/dist/index.js";
|
|
2
|
+
import type { AddControllerDeviceInput, AddControllerDeviceResult, ControllerClientConfig, ControllerInviteClaimInput, ControllerInviteClaimResult, ControllerInviteCreateInput, ControllerInviteCreateResult, CreateScopedTokenInput, DeviceListResponse, EncryptedMemoryRecord, MemorySettings, RenameDeviceResult, ScopedTokenInfo, ScopedTokenSelf, WorkspaceCwdPin, WorkspaceCwdPinInput, WorkspaceProjectPreference, WorkspaceProjectPreferenceInput, WorkspaceRecentSession, WorkspaceSessionStarResult, WorkspaceSyncState } from "./types.js";
|
|
3
3
|
export declare function listDevices(config: ControllerClientConfig): Promise<DeviceListResponse>;
|
|
4
4
|
export declare function createPairingCode(config: ControllerClientConfig): Promise<PairingStartResponse>;
|
|
5
5
|
export declare function addControllerDevice(config: ControllerClientConfig, input: AddControllerDeviceInput): Promise<AddControllerDeviceResult>;
|
|
@@ -9,6 +9,39 @@ export declare function revokeDevice(config: ControllerClientConfig, deviceId: s
|
|
|
9
9
|
deviceId: string;
|
|
10
10
|
revokedAt: number;
|
|
11
11
|
}>;
|
|
12
|
+
export declare function renameDevice(config: ControllerClientConfig, deviceId: string, name: string): Promise<RenameDeviceResult>;
|
|
13
|
+
export declare function workspaceSyncState(config: ControllerClientConfig): Promise<WorkspaceSyncState>;
|
|
14
|
+
export declare function setSessionStar(config: ControllerClientConfig, sessionId: string, starred: boolean): Promise<WorkspaceSessionStarResult>;
|
|
15
|
+
export declare function markSessionRecent(config: ControllerClientConfig, sessionId: string): Promise<WorkspaceRecentSession>;
|
|
16
|
+
export declare function pinWorkspaceCwd(config: ControllerClientConfig, input: WorkspaceCwdPinInput): Promise<WorkspaceCwdPin>;
|
|
17
|
+
export declare function unpinWorkspaceCwd(config: ControllerClientConfig, input: Pick<WorkspaceCwdPinInput, "machineId" | "cwd">): Promise<{
|
|
18
|
+
machineId: string;
|
|
19
|
+
cwd: string;
|
|
20
|
+
removed: boolean;
|
|
21
|
+
removedAt: number;
|
|
22
|
+
}>;
|
|
23
|
+
export declare function setWorkspaceProjectPreference(config: ControllerClientConfig, input: WorkspaceProjectPreferenceInput): Promise<WorkspaceProjectPreference>;
|
|
24
|
+
export declare function listEncryptedMemories(config: ControllerClientConfig, projectKey?: string): Promise<{
|
|
25
|
+
memories: EncryptedMemoryRecord[];
|
|
26
|
+
}>;
|
|
27
|
+
export declare function saveEncryptedMemory(config: ControllerClientConfig, input: {
|
|
28
|
+
id: string;
|
|
29
|
+
projectKey: string;
|
|
30
|
+
encryptedMemory: unknown;
|
|
31
|
+
}): Promise<EncryptedMemoryRecord>;
|
|
32
|
+
export declare function deleteMemory(config: ControllerClientConfig, id: string): Promise<{
|
|
33
|
+
id: string;
|
|
34
|
+
deleted: boolean;
|
|
35
|
+
deletedAt: number;
|
|
36
|
+
}>;
|
|
37
|
+
export declare function listMemorySettings(config: ControllerClientConfig, projectKey?: string): Promise<{
|
|
38
|
+
settings: MemorySettings[];
|
|
39
|
+
}>;
|
|
40
|
+
export declare function setMemorySettings(config: ControllerClientConfig, input: {
|
|
41
|
+
projectKey: string;
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
injectionEnabled?: boolean;
|
|
44
|
+
}): Promise<MemorySettings>;
|
|
12
45
|
export declare function tokenSelf(config: ControllerClientConfig): Promise<ScopedTokenSelf>;
|
|
13
46
|
export declare function listScopedTokens(config: ControllerClientConfig): Promise<{
|
|
14
47
|
tokens: ScopedTokenInfo[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { base64UrlEncode, encryptJson, randomBytes } from "../../shared/dist/index.js";
|
|
2
2
|
import { authenticatedJson, authenticatedJsonRaw, publicJsonRaw } from "./http.js";
|
|
3
|
-
import { parseAddControllerDeviceResult, parseControllerInviteClaim, parseControllerInviteCreate, parseDevicesResponse, parsePairingStartResponse, parseRevokeDeviceResult, parseScopedTokenCreate, parseScopedTokenList, parseScopedTokenRevoke, parseScopedTokenSelf, } from "./parsers.js";
|
|
3
|
+
import { parseAddControllerDeviceResult, parseControllerInviteClaim, parseControllerInviteCreate, parseDevicesResponse, parseMemoryDeleteResult, parseMemoryListResponse, parseMemorySaveResult, parseMemorySettingsList, parseMemorySettingsResult, parsePairingStartResponse, parseRenameDeviceResult, parseRevokeDeviceResult, parseScopedTokenCreate, parseScopedTokenList, parseScopedTokenRevoke, parseScopedTokenSelf, parseWorkspaceCwdPinResult, parseWorkspaceCwdUnpinResult, parseWorkspaceProjectPreferenceResult, parseWorkspaceRecentSessionResult, parseWorkspaceSessionStarResult, parseWorkspaceSyncState, } from "./parsers.js";
|
|
4
4
|
import { requireNonEmpty } from "./validation.js";
|
|
5
5
|
export async function listDevices(config) {
|
|
6
6
|
return await authenticatedJson(config, "/api/devices", { method: "GET" }, parseDevicesResponse);
|
|
@@ -54,6 +54,103 @@ export async function revokeDevice(config, deviceId) {
|
|
|
54
54
|
body: JSON.stringify({ deviceId: checkedDeviceId }),
|
|
55
55
|
}, parseRevokeDeviceResult);
|
|
56
56
|
}
|
|
57
|
+
export async function renameDevice(config, deviceId, name) {
|
|
58
|
+
const checkedDeviceId = requireNonEmpty(deviceId, "deviceId");
|
|
59
|
+
const checkedName = requireNonEmpty(name, "name");
|
|
60
|
+
return await authenticatedJson(config, "/api/devices/rename", {
|
|
61
|
+
method: "POST",
|
|
62
|
+
headers: { "content-type": "application/json" },
|
|
63
|
+
body: JSON.stringify({ deviceId: checkedDeviceId, name: checkedName }),
|
|
64
|
+
}, parseRenameDeviceResult);
|
|
65
|
+
}
|
|
66
|
+
export async function workspaceSyncState(config) {
|
|
67
|
+
return await authenticatedJson(config, "/api/workspace-sync", { method: "GET" }, parseWorkspaceSyncState);
|
|
68
|
+
}
|
|
69
|
+
export async function setSessionStar(config, sessionId, starred) {
|
|
70
|
+
const checkedSessionId = requireNonEmpty(sessionId, "sessionId");
|
|
71
|
+
return await authenticatedJson(config, "/api/workspace-sync/session-star", {
|
|
72
|
+
method: "POST",
|
|
73
|
+
headers: { "content-type": "application/json" },
|
|
74
|
+
body: JSON.stringify({ sessionId: checkedSessionId, starred }),
|
|
75
|
+
}, parseWorkspaceSessionStarResult);
|
|
76
|
+
}
|
|
77
|
+
export async function markSessionRecent(config, sessionId) {
|
|
78
|
+
const checkedSessionId = requireNonEmpty(sessionId, "sessionId");
|
|
79
|
+
return await authenticatedJson(config, "/api/workspace-sync/session-recent", {
|
|
80
|
+
method: "POST",
|
|
81
|
+
headers: { "content-type": "application/json" },
|
|
82
|
+
body: JSON.stringify({ sessionId: checkedSessionId }),
|
|
83
|
+
}, parseWorkspaceRecentSessionResult);
|
|
84
|
+
}
|
|
85
|
+
export async function pinWorkspaceCwd(config, input) {
|
|
86
|
+
const machineId = requireNonEmpty(input.machineId, "machineId");
|
|
87
|
+
const cwd = requireNonEmpty(input.cwd, "cwd");
|
|
88
|
+
return await authenticatedJson(config, "/api/workspace-sync/cwd-pin", {
|
|
89
|
+
method: "POST",
|
|
90
|
+
headers: { "content-type": "application/json" },
|
|
91
|
+
body: JSON.stringify({ machineId, cwd, ...(input.label ? { label: input.label } : {}) }),
|
|
92
|
+
}, parseWorkspaceCwdPinResult);
|
|
93
|
+
}
|
|
94
|
+
export async function unpinWorkspaceCwd(config, input) {
|
|
95
|
+
const machineId = requireNonEmpty(input.machineId, "machineId");
|
|
96
|
+
const cwd = requireNonEmpty(input.cwd, "cwd");
|
|
97
|
+
return await authenticatedJson(config, "/api/workspace-sync/cwd-unpin", {
|
|
98
|
+
method: "POST",
|
|
99
|
+
headers: { "content-type": "application/json" },
|
|
100
|
+
body: JSON.stringify({ machineId, cwd }),
|
|
101
|
+
}, parseWorkspaceCwdUnpinResult);
|
|
102
|
+
}
|
|
103
|
+
export async function setWorkspaceProjectPreference(config, input) {
|
|
104
|
+
const projectKey = requireNonEmpty(input.projectKey, "projectKey");
|
|
105
|
+
return await authenticatedJson(config, "/api/workspace-sync/project-preference", {
|
|
106
|
+
method: "POST",
|
|
107
|
+
headers: { "content-type": "application/json" },
|
|
108
|
+
body: JSON.stringify({
|
|
109
|
+
projectKey,
|
|
110
|
+
...(input.machineId ? { machineId: input.machineId } : {}),
|
|
111
|
+
...(input.cwd ? { cwd: input.cwd } : {}),
|
|
112
|
+
...(input.agent ? { agent: input.agent } : {}),
|
|
113
|
+
...(input.memoryMode ? { memoryMode: input.memoryMode } : {}),
|
|
114
|
+
}),
|
|
115
|
+
}, parseWorkspaceProjectPreferenceResult);
|
|
116
|
+
}
|
|
117
|
+
export async function listEncryptedMemories(config, projectKey) {
|
|
118
|
+
const query = projectKey ? `?projectKey=${encodeURIComponent(projectKey)}` : "";
|
|
119
|
+
return await authenticatedJson(config, `/api/memory${query}`, { method: "GET" }, parseMemoryListResponse);
|
|
120
|
+
}
|
|
121
|
+
export async function saveEncryptedMemory(config, input) {
|
|
122
|
+
const id = requireNonEmpty(input.id, "id");
|
|
123
|
+
const projectKey = requireNonEmpty(input.projectKey, "projectKey");
|
|
124
|
+
return await authenticatedJson(config, "/api/memory", {
|
|
125
|
+
method: "POST",
|
|
126
|
+
headers: { "content-type": "application/json" },
|
|
127
|
+
body: JSON.stringify({ id, projectKey, encryptedMemory: input.encryptedMemory }),
|
|
128
|
+
}, parseMemorySaveResult);
|
|
129
|
+
}
|
|
130
|
+
export async function deleteMemory(config, id) {
|
|
131
|
+
const checkedId = requireNonEmpty(id, "id");
|
|
132
|
+
return await authenticatedJson(config, "/api/memory/delete", {
|
|
133
|
+
method: "POST",
|
|
134
|
+
headers: { "content-type": "application/json" },
|
|
135
|
+
body: JSON.stringify({ id: checkedId }),
|
|
136
|
+
}, parseMemoryDeleteResult);
|
|
137
|
+
}
|
|
138
|
+
export async function listMemorySettings(config, projectKey) {
|
|
139
|
+
const query = projectKey ? `?projectKey=${encodeURIComponent(projectKey)}` : "";
|
|
140
|
+
return await authenticatedJson(config, `/api/memory/settings${query}`, { method: "GET" }, parseMemorySettingsList);
|
|
141
|
+
}
|
|
142
|
+
export async function setMemorySettings(config, input) {
|
|
143
|
+
const projectKey = requireNonEmpty(input.projectKey, "projectKey");
|
|
144
|
+
return await authenticatedJson(config, "/api/memory/settings", {
|
|
145
|
+
method: "POST",
|
|
146
|
+
headers: { "content-type": "application/json" },
|
|
147
|
+
body: JSON.stringify({
|
|
148
|
+
projectKey,
|
|
149
|
+
...(input.disabled === undefined ? {} : { disabled: input.disabled }),
|
|
150
|
+
...(input.injectionEnabled === undefined ? {} : { injectionEnabled: input.injectionEnabled }),
|
|
151
|
+
}),
|
|
152
|
+
}, parseMemorySettingsResult);
|
|
153
|
+
}
|
|
57
154
|
export async function tokenSelf(config) {
|
|
58
155
|
return await authenticatedJson(config, "/api/scoped-tokens/self", { method: "GET" }, parseScopedTokenSelf);
|
|
59
156
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type DirectoryListing, type EncryptedSessionEvent, type HistoricalSessionSnapshot, type MachineSnapshot, type PairingStartResponse, type SessionSnapshot } from "
|
|
1
|
+
import { type DirectoryListing, type EncryptedSessionEvent, type EncryptedEnvelope, type HistoricalSessionSnapshot, type MachineSnapshot, type PairingStartResponse, type SessionSnapshot } from "../../shared/dist/index.js";
|
|
2
2
|
import { sendCommand } from "./transport.js";
|
|
3
|
-
import type { AddControllerDeviceInput, AddControllerDeviceResult, CancelInput, CollectInput, CommandResult, ControllerClientConfig, ControllerInviteClaimInput, ControllerInviteClaimResult, ControllerInviteCreateInput, ControllerInviteCreateResult, ControllerSnapshot, ControllerSubscriptionHandlers, CreateScopedTokenInput, CreateSessionInput, DecodedSessionEvent, DecodedSessionEventsPage, DeviceListResponse, DirectoryInput, FilePreviewInput, ForkInput, HistoricalSessionListPage, HistoricalSessionsInput, ImportHistoricalSessionInput, MachineMetadata, MachineDevExecInput, MachineDevExecResponse, MachineDiagnosticsResponse, RunOptions, ScopedTokenInfo, ScopedTokenSelf, SessionFilter, SessionMetadata, WaitInput } from "./types.js";
|
|
3
|
+
import type { AddControllerDeviceInput, AddControllerDeviceResult, CancelInput, CollectInput, CommandResult, ControllerClientConfig, ControllerInviteClaimInput, ControllerInviteClaimResult, ControllerInviteCreateInput, ControllerInviteCreateResult, ControllerSnapshot, ControllerSubscriptionHandlers, CreateScopedTokenInput, CreateSessionInput, DecodedSessionEvent, DecodedSessionEventsPage, DeviceListResponse, DirectoryInput, FilePreviewInput, ForkInput, GatewayCommandInput, GatewayCommandResponse, HistoricalSessionListPage, HistoricalSessionsInput, ImportHistoricalSessionInput, MachineMetadata, MachineDevExecInput, MachineDevExecResponse, MachineDiagnosticsResponse, MemoryCommandInput, MemoryCommandResponse, DecodedMemoryRecord, RepairSessionHeadInput, RepairSessionHeadResult, RunOptions, ScheduleCommandInput, ScheduleCommandResponse, ScopedTokenInfo, ScopedTokenSelf, SessionFilter, SessionMetadata, WaitInput, MemorySaveInput, MemorySearchInput, MemorySettings, TurnReconcileResponse, WorkspaceCwdPin, WorkspaceCwdPinInput, WorkspaceProjectPreference, WorkspaceProjectPreferenceInput, WorkspaceRecentSession, WorkspaceSessionStarResult, WorkspaceSyncState } from "./types.js";
|
|
4
4
|
export declare class ControllerClient {
|
|
5
5
|
readonly config: ControllerClientConfig;
|
|
6
6
|
constructor(config: ControllerClientConfig);
|
|
@@ -15,6 +15,37 @@ export declare class ControllerClient {
|
|
|
15
15
|
deviceId: string;
|
|
16
16
|
revokedAt: number;
|
|
17
17
|
}>;
|
|
18
|
+
renameDevice(deviceId: string, name: string): Promise<{
|
|
19
|
+
deviceId: string;
|
|
20
|
+
name: string;
|
|
21
|
+
renamedAt: number;
|
|
22
|
+
}>;
|
|
23
|
+
workspaceSync(): Promise<WorkspaceSyncState>;
|
|
24
|
+
starSession(sessionId: string): Promise<WorkspaceSessionStarResult>;
|
|
25
|
+
unstarSession(sessionId: string): Promise<WorkspaceSessionStarResult>;
|
|
26
|
+
markSessionRecent(sessionId: string): Promise<WorkspaceRecentSession>;
|
|
27
|
+
pinWorkspaceCwd(input: WorkspaceCwdPinInput): Promise<WorkspaceCwdPin>;
|
|
28
|
+
unpinWorkspaceCwd(input: Pick<WorkspaceCwdPinInput, "machineId" | "cwd">): Promise<{
|
|
29
|
+
machineId: string;
|
|
30
|
+
cwd: string;
|
|
31
|
+
removed: boolean;
|
|
32
|
+
removedAt: number;
|
|
33
|
+
}>;
|
|
34
|
+
setWorkspaceProjectPreference(input: WorkspaceProjectPreferenceInput): Promise<WorkspaceProjectPreference>;
|
|
35
|
+
saveMemory(input: MemorySaveInput): Promise<DecodedMemoryRecord>;
|
|
36
|
+
listMemories(projectKey?: string): Promise<DecodedMemoryRecord[]>;
|
|
37
|
+
searchMemories(input: MemorySearchInput): Promise<DecodedMemoryRecord[]>;
|
|
38
|
+
deleteMemory(id: string): Promise<{
|
|
39
|
+
id: string;
|
|
40
|
+
deleted: boolean;
|
|
41
|
+
deletedAt: number;
|
|
42
|
+
}>;
|
|
43
|
+
memorySettings(projectKey?: string): Promise<MemorySettings[]>;
|
|
44
|
+
setMemorySettings(input: {
|
|
45
|
+
projectKey: string;
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
injectionEnabled?: boolean;
|
|
48
|
+
}): Promise<MemorySettings>;
|
|
18
49
|
tokenSelf(): Promise<ScopedTokenSelf>;
|
|
19
50
|
listScopedTokens(): Promise<{
|
|
20
51
|
tokens: ScopedTokenInfo[];
|
|
@@ -31,31 +62,53 @@ export declare class ControllerClient {
|
|
|
31
62
|
getSession(sessionId: string): Promise<SessionSnapshot | undefined>;
|
|
32
63
|
history(sessionId: string, limit?: number): Promise<DecodedSessionEvent[]>;
|
|
33
64
|
createSession(input: CreateSessionInput): Promise<CommandResult>;
|
|
65
|
+
updateSessionMetadata(sessionId: string, metadata: SessionMetadata): Promise<SessionSnapshot>;
|
|
66
|
+
setSessionTags(sessionId: string, tags: readonly unknown[]): Promise<{
|
|
67
|
+
session: SessionSnapshot;
|
|
68
|
+
tags: string[];
|
|
69
|
+
}>;
|
|
70
|
+
findLoadedRuntimeSession(input: {
|
|
71
|
+
machineId: string;
|
|
72
|
+
agent: string;
|
|
73
|
+
runtimeSessionId: string;
|
|
74
|
+
}): Promise<SessionSnapshot | undefined>;
|
|
34
75
|
collect(sessionId: string, input?: CollectInput): Promise<DecodedSessionEvent[]>;
|
|
35
76
|
collectPage(sessionId: string, input?: CollectInput): Promise<DecodedSessionEventsPage>;
|
|
77
|
+
repairSessionHead(sessionId: string, input: RepairSessionHeadInput): Promise<RepairSessionHeadResult>;
|
|
36
78
|
wait(sessionId: string, input?: WaitInput): Promise<SessionSnapshot>;
|
|
37
|
-
resume(sessionId: string
|
|
79
|
+
resume(sessionId: string, options?: {
|
|
80
|
+
syncDirection?: "latest" | "older";
|
|
81
|
+
}): Promise<CommandResult>;
|
|
38
82
|
listHistoricalSessionsPage(input: HistoricalSessionsInput): Promise<HistoricalSessionListPage>;
|
|
39
83
|
listHistoricalSessions(input: HistoricalSessionsInput): Promise<HistoricalSessionSnapshot[]>;
|
|
40
84
|
listDirectory(input: DirectoryInput): Promise<DirectoryListing>;
|
|
41
|
-
previewFile(input: FilePreviewInput): Promise<import("
|
|
85
|
+
previewFile(input: FilePreviewInput): Promise<import("../../shared/dist/index.js").FilePreviewResult>;
|
|
42
86
|
machineDiagnostics(machineId: string): Promise<MachineDiagnosticsResponse>;
|
|
43
87
|
machineDevExec(input: MachineDevExecInput): Promise<MachineDevExecResponse>;
|
|
88
|
+
gateway(input: GatewayCommandInput): Promise<GatewayCommandResponse>;
|
|
89
|
+
schedule(input: ScheduleCommandInput): Promise<ScheduleCommandResponse>;
|
|
90
|
+
memory(input: MemoryCommandInput): Promise<MemoryCommandResponse>;
|
|
44
91
|
importHistoricalSession(input: ImportHistoricalSessionInput): Promise<CommandResult>;
|
|
45
92
|
rewind(sessionId: string, to: string): Promise<CommandResult>;
|
|
46
93
|
fork(sessionId: string, input: ForkInput): Promise<CommandResult>;
|
|
47
94
|
renameSession(sessionId: string, name: string): Promise<CommandResult>;
|
|
48
95
|
run(sessionId: string, text: string, options?: RunOptions): Promise<CommandResult>;
|
|
96
|
+
reconcileTurn(sessionId: string, turnId?: string): Promise<TurnReconcileResponse>;
|
|
49
97
|
cancel(sessionId: string, input?: CancelInput): Promise<CommandResult>;
|
|
50
98
|
close(sessionId: string, reason?: string): Promise<CommandResult>;
|
|
51
99
|
subscribe(handlers: ControllerSubscriptionHandlers): WebSocket;
|
|
52
100
|
decodeEvents(events: EncryptedSessionEvent[]): Promise<DecodedSessionEvent[]>;
|
|
53
101
|
decodeMachineMetadata(machine: MachineSnapshot): Promise<MachineMetadata>;
|
|
54
102
|
decodeSessionMetadata(session: SessionSnapshot): Promise<SessionMetadata>;
|
|
103
|
+
decodeMemory(memory: {
|
|
104
|
+
id: string;
|
|
105
|
+
projectKey: string;
|
|
106
|
+
encryptedMemory: EncryptedEnvelope;
|
|
107
|
+
createdAt: number;
|
|
108
|
+
updatedAt: number;
|
|
109
|
+
}): Promise<DecodedMemoryRecord>;
|
|
55
110
|
sendCommand(command: Parameters<typeof sendCommand>[1], waitForDone?: boolean, timeoutMs?: number): Promise<CommandResult>;
|
|
56
111
|
private waitForCreatedSession;
|
|
57
|
-
private recoverCreatedSessionName;
|
|
58
|
-
private waitForSessionName;
|
|
59
112
|
private waitForRunSettlement;
|
|
60
113
|
private mergeReplayedTurnEvents;
|
|
61
114
|
private sessionEvents;
|