@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
|
@@ -16,7 +16,7 @@ export async function handleRemote({ domain, action, positional, flags }) {
|
|
|
16
16
|
return true;
|
|
17
17
|
}
|
|
18
18
|
for (const device of result.devices) {
|
|
19
|
-
const state = device.revoked ? "revoked" : "
|
|
19
|
+
const state = device.revoked ? "revoked" : device.online === false ? "offline" : "online";
|
|
20
20
|
const current = device.current ? " current" : "";
|
|
21
21
|
console.log(`${device.deviceId} ${device.kind} ${state}${current} ${displayName(device)}`);
|
|
22
22
|
}
|
|
@@ -34,7 +34,8 @@ export async function handleRemote({ domain, action, positional, flags }) {
|
|
|
34
34
|
kind: device.kind,
|
|
35
35
|
current: device.current,
|
|
36
36
|
revoked: device.revoked,
|
|
37
|
-
|
|
37
|
+
online: device.online,
|
|
38
|
+
lastSeen: device.lastSeen ?? device.revokedAt ?? device.createdAt,
|
|
38
39
|
...(device.machineId ? { machineId: device.machineId } : {}),
|
|
39
40
|
})),
|
|
40
41
|
});
|
|
@@ -138,6 +139,13 @@ export async function handleRemote({ domain, action, positional, flags }) {
|
|
|
138
139
|
ok("remote.revoke", await new ControllerClient(config).revokeDevice(deviceId));
|
|
139
140
|
return true;
|
|
140
141
|
}
|
|
142
|
+
if (domain === "remote" && action === "rename") {
|
|
143
|
+
const config = await readConfig(flags);
|
|
144
|
+
const deviceId = requirePositional(positional[0], "deviceId");
|
|
145
|
+
const name = requireString(flags, "name");
|
|
146
|
+
ok("remote.rename", await new ControllerClient(config).renameDevice(deviceId, name));
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
141
149
|
return false;
|
|
142
150
|
}
|
|
143
151
|
//# sourceMappingURL=remote.js.map
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { CliError, ControllerClient, ok, readConfig, readPromptTextFile, requirePositional, wantsJson, } from "./lib/index.js";
|
|
2
|
+
export async function handleSchedule({ domain, action, positional, flags }) {
|
|
3
|
+
if (domain !== "schedule")
|
|
4
|
+
return false;
|
|
5
|
+
if (action === "create") {
|
|
6
|
+
const config = await readConfig(flags);
|
|
7
|
+
const client = new ControllerClient(config);
|
|
8
|
+
const sessionId = typeof flags.session === "string" && flags.session.trim() ? flags.session.trim() : undefined;
|
|
9
|
+
const machineId = await resolveScheduleMachineId(client, flags, sessionId);
|
|
10
|
+
const schedule = parseScheduleSpec(flags);
|
|
11
|
+
const target = parseScheduleTarget(flags, sessionId);
|
|
12
|
+
const execution = parseChoice(flags.execution, "execution", ["continue", "isolated"]) ?? "continue";
|
|
13
|
+
const memoryMode = parseScheduleMemoryMode(flags.memory ?? flags["memory-mode"]) ?? "inherit";
|
|
14
|
+
const prompt = typeof flags.prompt === "string"
|
|
15
|
+
? flags.prompt
|
|
16
|
+
: typeof flags["prompt-file"] === "string"
|
|
17
|
+
? await readPromptTextFile(flags["prompt-file"])
|
|
18
|
+
: "";
|
|
19
|
+
if (!prompt.trim())
|
|
20
|
+
throw new CliError("Missing --prompt or --prompt-file", "MISSING_ARGUMENT");
|
|
21
|
+
const scheduleInput = {
|
|
22
|
+
...(typeof flags.name === "string" ? { name: flags.name } : {}),
|
|
23
|
+
...(sessionId ? { sessionId, sourceSessionId: sessionId } : {}),
|
|
24
|
+
prompt,
|
|
25
|
+
schedule,
|
|
26
|
+
target,
|
|
27
|
+
execution,
|
|
28
|
+
memoryMode,
|
|
29
|
+
stopOn: parseStopOn(flags["stop-on"]),
|
|
30
|
+
};
|
|
31
|
+
if (schedule.type === "oneshot")
|
|
32
|
+
scheduleInput.dueAt = schedule.runAt;
|
|
33
|
+
const result = await client.schedule({
|
|
34
|
+
machineId,
|
|
35
|
+
action: "create",
|
|
36
|
+
schedule: scheduleInput,
|
|
37
|
+
});
|
|
38
|
+
ok("schedule.create", { schedule: compactSchedule(result.schedule) });
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
if (action === "list") {
|
|
42
|
+
const config = await readConfig(flags);
|
|
43
|
+
const client = new ControllerClient(config);
|
|
44
|
+
const machineId = await resolveScheduleMachineId(client, flags);
|
|
45
|
+
const result = await client.schedule({ machineId, action: "list" });
|
|
46
|
+
const schedules = result.schedules ?? [];
|
|
47
|
+
if (!wantsJson(flags)) {
|
|
48
|
+
if (schedules.length === 0)
|
|
49
|
+
console.log("No schedules.");
|
|
50
|
+
else
|
|
51
|
+
for (const schedule of schedules) {
|
|
52
|
+
const preview = schedule.previewRunAt?.length ? ` preview:${schedule.previewRunAt.join(",")}` : "";
|
|
53
|
+
console.log(`${schedule.id} ${schedule.status} ${cadenceLabel(schedule)} next:${schedule.nextRunAt ?? "manual"} source:${schedule.sourceSessionId ?? schedule.sessionId ?? "pending"}${preview}`);
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
ok("schedule.list", { machineId, schedules: schedules.map(compactSchedule) });
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if (action === "show") {
|
|
61
|
+
const config = await readConfig(flags);
|
|
62
|
+
const client = new ControllerClient(config);
|
|
63
|
+
const scheduleId = requirePositional(positional[0], "scheduleId");
|
|
64
|
+
const machineId = await resolveScheduleOwnerMachineId(client, flags, scheduleId);
|
|
65
|
+
const result = await client.schedule({
|
|
66
|
+
machineId,
|
|
67
|
+
action: "show",
|
|
68
|
+
scheduleId,
|
|
69
|
+
});
|
|
70
|
+
ok("schedule.show", { machineId, schedule: result.schedule });
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
if (action === "pause" || action === "resume" || action === "delete") {
|
|
74
|
+
const config = await readConfig(flags);
|
|
75
|
+
const client = new ControllerClient(config);
|
|
76
|
+
const scheduleId = requirePositional(positional[0], "scheduleId");
|
|
77
|
+
const machineId = await resolveScheduleOwnerMachineId(client, flags, scheduleId);
|
|
78
|
+
const result = await client.schedule({ machineId, action, scheduleId });
|
|
79
|
+
ok(`schedule.${action}`, { machineId, schedule: compactSchedule(result.schedule), scheduleId: result.scheduleId ?? scheduleId });
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
if (action === "run" || action === "run-now") {
|
|
83
|
+
const config = await readConfig(flags);
|
|
84
|
+
const client = new ControllerClient(config);
|
|
85
|
+
const scheduleId = requirePositional(positional[0], "scheduleId");
|
|
86
|
+
const machineId = await resolveScheduleOwnerMachineId(client, flags, scheduleId);
|
|
87
|
+
const result = await client.schedule({ machineId, action: "run", scheduleId });
|
|
88
|
+
ok("schedule.run", { machineId, scheduleId: result.scheduleId ?? scheduleId, run: result.run });
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
if (action === "history") {
|
|
92
|
+
const config = await readConfig(flags);
|
|
93
|
+
const client = new ControllerClient(config);
|
|
94
|
+
const scheduleId = requirePositional(positional[0], "scheduleId");
|
|
95
|
+
const machineId = await resolveScheduleOwnerMachineId(client, flags, scheduleId);
|
|
96
|
+
const result = await client.schedule({ machineId, action: "history", scheduleId });
|
|
97
|
+
ok("schedule.history", { machineId, scheduleId: result.scheduleId ?? scheduleId, runs: result.history ?? [] });
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
if (action === "run-due") {
|
|
101
|
+
const config = await readConfig(flags);
|
|
102
|
+
const client = new ControllerClient(config);
|
|
103
|
+
const machineId = await resolveScheduleMachineId(client, flags);
|
|
104
|
+
const result = await client.schedule({ machineId, action: "runDue" });
|
|
105
|
+
ok("schedule.run-due", { machineId, runs: result.runs ?? [] });
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
if (action === "run-missed") {
|
|
109
|
+
const config = await readConfig(flags);
|
|
110
|
+
const client = new ControllerClient(config);
|
|
111
|
+
const scheduleId = requirePositional(positional[0], "scheduleId");
|
|
112
|
+
const machineId = await resolveScheduleOwnerMachineId(client, flags, scheduleId);
|
|
113
|
+
const occurrenceId = requirePositional(positional[1], "occurrenceId");
|
|
114
|
+
const result = await client.schedule({ machineId, action: "runMissed", scheduleId, occurrenceId });
|
|
115
|
+
ok("schedule.run-missed", { machineId, scheduleId: result.scheduleId ?? scheduleId, run: result.run });
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
async function resolveScheduleMachineId(client, flags, sessionId) {
|
|
121
|
+
if (typeof flags.machine === "string" && flags.machine.length > 0)
|
|
122
|
+
return flags.machine;
|
|
123
|
+
if (sessionId) {
|
|
124
|
+
const session = await client.getSession(sessionId);
|
|
125
|
+
if (session)
|
|
126
|
+
return session.machineId;
|
|
127
|
+
}
|
|
128
|
+
const snapshot = await client.snapshot();
|
|
129
|
+
const machine = snapshot.machines.find((item) => item.online) ?? snapshot.machines[0];
|
|
130
|
+
if (!machine)
|
|
131
|
+
throw new CliError("No daemon machine is available; pass --machine <machineId>", "MACHINE_NOT_FOUND");
|
|
132
|
+
return machine.id;
|
|
133
|
+
}
|
|
134
|
+
async function resolveScheduleOwnerMachineId(client, flags, scheduleId) {
|
|
135
|
+
if (typeof flags.machine === "string" && flags.machine.length > 0)
|
|
136
|
+
return flags.machine;
|
|
137
|
+
const snapshot = await client.snapshot();
|
|
138
|
+
const machines = snapshot.machines.filter((machine) => machine.online);
|
|
139
|
+
if (machines.length === 0) {
|
|
140
|
+
throw new CliError(`Schedule ${scheduleId} cannot be located because no daemon machine is online; pass --machine <machineId> after starting the target daemon`, "MACHINE_NOT_FOUND");
|
|
141
|
+
}
|
|
142
|
+
const checks = await Promise.all(machines.map(async (machine) => {
|
|
143
|
+
try {
|
|
144
|
+
const result = await client.schedule({ machineId: machine.id, action: "list" });
|
|
145
|
+
return {
|
|
146
|
+
machineId: machine.id,
|
|
147
|
+
found: (result.schedules ?? []).some((schedule) => schedule.id === scheduleId),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
return {
|
|
152
|
+
machineId: machine.id,
|
|
153
|
+
found: false,
|
|
154
|
+
error,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}));
|
|
158
|
+
const matches = checks.filter((check) => check.found);
|
|
159
|
+
if (matches.length === 1)
|
|
160
|
+
return matches[0].machineId;
|
|
161
|
+
if (matches.length > 1) {
|
|
162
|
+
throw new CliError(`Schedule ${scheduleId} exists on multiple online daemons (${matches.map((match) => match.machineId).join(", ")}); pass --machine <machineId>`, "SCHEDULE_OWNER_AMBIGUOUS");
|
|
163
|
+
}
|
|
164
|
+
const failedChecks = checks.filter((check) => check.error);
|
|
165
|
+
const unavailable = failedChecks.length > 0
|
|
166
|
+
? ` ${failedChecks.length}/${machines.length} online daemon(s) did not respond to schedule list.`
|
|
167
|
+
: "";
|
|
168
|
+
throw new CliError(`Schedule not found on any online daemon: ${scheduleId}.${unavailable} Pass --machine <machineId> if the owning daemon is offline or not visible.`, "SCHEDULE_NOT_FOUND");
|
|
169
|
+
}
|
|
170
|
+
function parseScheduleDueAt(value) {
|
|
171
|
+
const date = new Date(value);
|
|
172
|
+
if (!Number.isFinite(date.getTime()))
|
|
173
|
+
throw new CliError("Invalid --at date", "INVALID_ARGUMENT");
|
|
174
|
+
return date.toISOString();
|
|
175
|
+
}
|
|
176
|
+
function parseScheduleSpec(flags) {
|
|
177
|
+
if (flags.manual === true)
|
|
178
|
+
return { type: "manual" };
|
|
179
|
+
if (typeof flags.cron === "string" && flags.cron.trim()) {
|
|
180
|
+
return {
|
|
181
|
+
type: "cron",
|
|
182
|
+
expr: flags.cron.trim(),
|
|
183
|
+
...(typeof flags.timezone === "string" && flags.timezone.trim() ? { timezone: flags.timezone.trim() } : {}),
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
if (typeof flags["every-ms"] === "string" || typeof flags.every === "string") {
|
|
187
|
+
const raw = typeof flags["every-ms"] === "string" ? flags["every-ms"] : typeof flags.every === "string" ? flags.every : "";
|
|
188
|
+
const everyMs = parseIntervalMs(raw);
|
|
189
|
+
return { type: "interval", everyMs };
|
|
190
|
+
}
|
|
191
|
+
if (typeof flags.at === "string" && flags.at.trim())
|
|
192
|
+
return { type: "oneshot", runAt: parseScheduleDueAt(flags.at) };
|
|
193
|
+
return { type: "manual" };
|
|
194
|
+
}
|
|
195
|
+
function parseScheduleTarget(flags, sessionId) {
|
|
196
|
+
if (sessionId)
|
|
197
|
+
return { type: "sourceSession", sourceSessionId: sessionId };
|
|
198
|
+
const cwd = typeof flags.cwd === "string" && flags.cwd.trim() ? flags.cwd.trim() : process.cwd();
|
|
199
|
+
const agent = typeof flags.agent === "string" && flags.agent.trim() ? flags.agent.trim() : "codex";
|
|
200
|
+
const machineId = typeof flags.machine === "string" && flags.machine.trim() ? flags.machine.trim() : undefined;
|
|
201
|
+
return { type: "project", cwd, agent, ...(machineId ? { machineId } : {}) };
|
|
202
|
+
}
|
|
203
|
+
function parseIntervalMs(value) {
|
|
204
|
+
const trimmed = value.trim();
|
|
205
|
+
const numeric = Number(trimmed);
|
|
206
|
+
if (Number.isFinite(numeric) && numeric > 0)
|
|
207
|
+
return Math.floor(numeric);
|
|
208
|
+
const match = trimmed.match(/^(\d+(?:\.\d+)?)(ms|s|m|h|d)$/i);
|
|
209
|
+
if (!match)
|
|
210
|
+
throw new CliError("Invalid --every value; use milliseconds or 5m/1h style duration", "INVALID_ARGUMENT");
|
|
211
|
+
const amount = Number(match[1]);
|
|
212
|
+
const unit = match[2].toLowerCase();
|
|
213
|
+
const multiplier = unit === "ms" ? 1 : unit === "s" ? 1_000 : unit === "m" ? 60_000 : unit === "h" ? 3_600_000 : 86_400_000;
|
|
214
|
+
return Math.max(1, Math.floor(amount * multiplier));
|
|
215
|
+
}
|
|
216
|
+
function parseChoice(value, name, choices) {
|
|
217
|
+
if (typeof value !== "string" || !value.trim())
|
|
218
|
+
return undefined;
|
|
219
|
+
if (choices.includes(value))
|
|
220
|
+
return value;
|
|
221
|
+
throw new CliError(`Invalid --${name}; expected ${choices.join("|")}`, "INVALID_ARGUMENT");
|
|
222
|
+
}
|
|
223
|
+
function parseScheduleMemoryMode(value) {
|
|
224
|
+
if (typeof value !== "string" || !value.trim())
|
|
225
|
+
return undefined;
|
|
226
|
+
const normalized = value.trim().toLowerCase().replace(/-/g, "");
|
|
227
|
+
if (normalized === "inherit" || normalized === "off" || normalized === "readonly" || normalized === "readwrite")
|
|
228
|
+
return normalized;
|
|
229
|
+
throw new CliError("Invalid --memory; expected inherit|off|readonly|readwrite|read-only|read-write", "INVALID_ARGUMENT");
|
|
230
|
+
}
|
|
231
|
+
function parseStopOn(value) {
|
|
232
|
+
if (typeof value !== "string" || !value.trim())
|
|
233
|
+
return ["blocked", "failed", "permission"];
|
|
234
|
+
const allowed = new Set(["blocked", "failed", "permission"]);
|
|
235
|
+
const parsed = value.split(",").map((item) => item.trim()).filter(Boolean);
|
|
236
|
+
if (parsed.length === 0 || parsed.some((item) => !allowed.has(item))) {
|
|
237
|
+
throw new CliError("Invalid --stop-on; expected comma-separated blocked,failed,permission", "INVALID_ARGUMENT");
|
|
238
|
+
}
|
|
239
|
+
return parsed;
|
|
240
|
+
}
|
|
241
|
+
function cadenceLabel(schedule) {
|
|
242
|
+
const spec = schedule.schedule ?? (schedule.dueAt ? { type: "oneshot", runAt: schedule.dueAt } : { type: "manual" });
|
|
243
|
+
if (spec.type === "manual")
|
|
244
|
+
return "manual";
|
|
245
|
+
if (spec.type === "oneshot")
|
|
246
|
+
return `once:${spec.runAt}`;
|
|
247
|
+
if (spec.type === "interval")
|
|
248
|
+
return `interval:${spec.everyMs}ms`;
|
|
249
|
+
return `cron:${spec.expr}`;
|
|
250
|
+
}
|
|
251
|
+
function compactSchedule(schedule) {
|
|
252
|
+
if (!schedule)
|
|
253
|
+
return undefined;
|
|
254
|
+
return {
|
|
255
|
+
id: schedule.id,
|
|
256
|
+
name: schedule.name,
|
|
257
|
+
sessionId: schedule.sessionId,
|
|
258
|
+
sourceSessionId: schedule.sourceSessionId,
|
|
259
|
+
target: schedule.target,
|
|
260
|
+
schedule: schedule.schedule,
|
|
261
|
+
execution: schedule.execution,
|
|
262
|
+
memoryMode: schedule.memoryMode,
|
|
263
|
+
stopOn: schedule.stopOn,
|
|
264
|
+
dueAt: schedule.dueAt,
|
|
265
|
+
nextRunAt: schedule.nextRunAt,
|
|
266
|
+
previewRunAt: schedule.previewRunAt,
|
|
267
|
+
status: schedule.status,
|
|
268
|
+
runCount: schedule.runCount ?? schedule.runs.length,
|
|
269
|
+
lastRun: schedule.lastRun ?? schedule.runs[0],
|
|
270
|
+
runs: schedule.runs,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=schedule.js.map
|