@jungjaehoon/mama-os 0.32.0 → 0.32.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +15 -13
- package/dist/agent/agent-loop.d.ts +10 -1
- package/dist/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +221 -103
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/backend-model-policy.d.ts +9 -0
- package/dist/agent/backend-model-policy.d.ts.map +1 -0
- package/dist/agent/backend-model-policy.js +21 -0
- package/dist/agent/backend-model-policy.js.map +1 -0
- package/dist/agent/backend-model-runner-factory.d.ts +27 -0
- package/dist/agent/backend-model-runner-factory.d.ts.map +1 -0
- package/dist/agent/backend-model-runner-factory.js +85 -0
- package/dist/agent/backend-model-runner-factory.js.map +1 -0
- package/dist/agent/cline-cli-adapter.d.ts +124 -0
- package/dist/agent/cline-cli-adapter.d.ts.map +1 -0
- package/dist/agent/cline-cli-adapter.js +1040 -0
- package/dist/agent/cline-cli-adapter.js.map +1 -0
- package/dist/agent/cline-native-tool-policy.d.ts +3 -0
- package/dist/agent/cline-native-tool-policy.d.ts.map +1 -0
- package/dist/agent/cline-native-tool-policy.js +50 -0
- package/dist/agent/cline-native-tool-policy.js.map +1 -0
- package/dist/agent/code-act/constants.d.ts +1 -1
- package/dist/agent/code-act/constants.d.ts.map +1 -1
- package/dist/agent/code-act/constants.js +13 -1
- package/dist/agent/code-act/constants.js.map +1 -1
- package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
- package/dist/agent/code-act/host-bridge.js +35 -74
- package/dist/agent/code-act/host-bridge.js.map +1 -1
- package/dist/agent/codex-app-server-process.d.ts +5 -0
- package/dist/agent/codex-app-server-process.d.ts.map +1 -1
- package/dist/agent/codex-app-server-process.js +30 -0
- package/dist/agent/codex-app-server-process.js.map +1 -1
- package/dist/agent/codex-auxiliary-tools.d.ts +17 -0
- package/dist/agent/codex-auxiliary-tools.d.ts.map +1 -0
- package/dist/agent/codex-auxiliary-tools.js +267 -0
- package/dist/agent/codex-auxiliary-tools.js.map +1 -0
- package/dist/agent/codex-home.d.ts.map +1 -1
- package/dist/agent/codex-home.js +1 -0
- package/dist/agent/codex-home.js.map +1 -1
- package/dist/agent/gateway-tool-catalog.d.ts +14 -0
- package/dist/agent/gateway-tool-catalog.d.ts.map +1 -0
- package/dist/agent/gateway-tool-catalog.js +41 -0
- package/dist/agent/gateway-tool-catalog.js.map +1 -0
- package/dist/agent/gateway-tool-executor.d.ts +12 -1
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
- package/dist/agent/gateway-tool-executor.js +149 -15
- package/dist/agent/gateway-tool-executor.js.map +1 -1
- package/dist/agent/gateway-tools.md +5 -7
- package/dist/agent/managed-agent-runtime-sync.d.ts.map +1 -1
- package/dist/agent/managed-agent-runtime-sync.js +17 -3
- package/dist/agent/managed-agent-runtime-sync.js.map +1 -1
- package/dist/agent/managed-agent-validation.js +1 -1
- package/dist/agent/managed-agent-validation.js.map +1 -1
- package/dist/agent/model-runner.d.ts +11 -1
- package/dist/agent/model-runner.d.ts.map +1 -1
- package/dist/agent/model-runner.js +12 -1
- package/dist/agent/model-runner.js.map +1 -1
- package/dist/agent/session-pool.d.ts +10 -9
- package/dist/agent/session-pool.d.ts.map +1 -1
- package/dist/agent/session-pool.js +12 -47
- package/dist/agent/session-pool.js.map +1 -1
- package/dist/agent/tool-registry.d.ts +6 -4
- package/dist/agent/tool-registry.d.ts.map +1 -1
- package/dist/agent/tool-registry.js +62 -30
- package/dist/agent/tool-registry.js.map +1 -1
- package/dist/agent/types.d.ts +36 -4
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/graph-api.d.ts.map +1 -1
- package/dist/api/graph-api.js +15 -5
- package/dist/api/graph-api.js.map +1 -1
- package/dist/api/index.d.ts +10 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +7 -16
- package/dist/api/index.js.map +1 -1
- package/dist/cli/commands/connector.d.ts +6 -1
- package/dist/cli/commands/connector.d.ts.map +1 -1
- package/dist/cli/commands/connector.js +61 -45
- package/dist/cli/commands/connector.js.map +1 -1
- package/dist/cli/commands/init.d.ts +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +43 -10
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +12 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +22 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +79 -28
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/start.d.ts +13 -9
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +190 -97
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +4 -0
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/config/config-manager.d.ts.map +1 -1
- package/dist/cli/config/config-manager.js +63 -14
- package/dist/cli/config/config-manager.js.map +1 -1
- package/dist/cli/config/types.d.ts +12 -5
- package/dist/cli/config/types.d.ts.map +1 -1
- package/dist/cli/config/types.js +3 -4
- package/dist/cli/config/types.js.map +1 -1
- package/dist/cli/index.js +6 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/runtime/agent-loop-init.d.ts +1 -1
- package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
- package/dist/cli/runtime/agent-loop-init.js +8 -3
- package/dist/cli/runtime/agent-loop-init.js.map +1 -1
- package/dist/cli/runtime/api-routes-init.d.ts +38 -1
- package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
- package/dist/cli/runtime/api-routes-init.js +150 -30
- package/dist/cli/runtime/api-routes-init.js.map +1 -1
- package/dist/cli/runtime/api-server-init.d.ts +4 -0
- package/dist/cli/runtime/api-server-init.d.ts.map +1 -1
- package/dist/cli/runtime/api-server-init.js +3 -1
- package/dist/cli/runtime/api-server-init.js.map +1 -1
- package/dist/cli/runtime/connector-bootstrap.d.ts +8 -0
- package/dist/cli/runtime/connector-bootstrap.d.ts.map +1 -0
- package/dist/cli/runtime/connector-bootstrap.js +14 -0
- package/dist/cli/runtime/connector-bootstrap.js.map +1 -0
- package/dist/cli/runtime/connector-init.d.ts +4 -1
- package/dist/cli/runtime/connector-init.d.ts.map +1 -1
- package/dist/cli/runtime/connector-init.js +2 -8
- package/dist/cli/runtime/connector-init.js.map +1 -1
- package/dist/cli/runtime/envelope-bootstrap.d.ts +2 -1
- package/dist/cli/runtime/envelope-bootstrap.d.ts.map +1 -1
- package/dist/cli/runtime/envelope-bootstrap.js +7 -15
- package/dist/cli/runtime/envelope-bootstrap.js.map +1 -1
- package/dist/cli/runtime/gateway-init.d.ts +1 -1
- package/dist/cli/runtime/gateway-init.d.ts.map +1 -1
- package/dist/cli/runtime/gateway-init.js.map +1 -1
- package/dist/cli/runtime/mama-core-init.d.ts +10 -2
- package/dist/cli/runtime/mama-core-init.d.ts.map +1 -1
- package/dist/cli/runtime/mama-core-init.js +52 -68
- package/dist/cli/runtime/mama-core-init.js.map +1 -1
- package/dist/cli/runtime/memory-agent-init.d.ts.map +1 -1
- package/dist/cli/runtime/memory-agent-init.js +18 -5
- package/dist/cli/runtime/memory-agent-init.js.map +1 -1
- package/dist/cli/runtime/scheduler-init.d.ts +4 -0
- package/dist/cli/runtime/scheduler-init.d.ts.map +1 -1
- package/dist/cli/runtime/scheduler-init.js +24 -3
- package/dist/cli/runtime/scheduler-init.js.map +1 -1
- package/dist/cli/runtime/shutdown.d.ts +4 -0
- package/dist/cli/runtime/shutdown.d.ts.map +1 -1
- package/dist/cli/runtime/shutdown.js +30 -6
- package/dist/cli/runtime/shutdown.js.map +1 -1
- package/dist/cli/runtime/utilities.d.ts +2 -0
- package/dist/cli/runtime/utilities.d.ts.map +1 -1
- package/dist/cli/runtime/utilities.js +33 -0
- package/dist/cli/runtime/utilities.js.map +1 -1
- package/dist/connectors/index.d.ts +4 -1
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +3 -2
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/private-connector-policy.d.ts +150 -0
- package/dist/connectors/private-connector-policy.d.ts.map +1 -0
- package/dist/connectors/private-connector-policy.js +289 -0
- package/dist/connectors/private-connector-policy.js.map +1 -0
- package/dist/connectors/private-prompt-overlay.d.ts +17 -0
- package/dist/connectors/private-prompt-overlay.d.ts.map +1 -0
- package/dist/connectors/private-prompt-overlay.js +156 -0
- package/dist/connectors/private-prompt-overlay.js.map +1 -0
- package/dist/db/migrations/operator-task-external-lifecycle.d.ts +8 -0
- package/dist/db/migrations/operator-task-external-lifecycle.d.ts.map +1 -0
- package/dist/db/migrations/operator-task-external-lifecycle.js +169 -0
- package/dist/db/migrations/operator-task-external-lifecycle.js.map +1 -0
- package/dist/envelope/enforcer.js +8 -7
- package/dist/envelope/enforcer.js.map +1 -1
- package/dist/envelope/reactive-config.d.ts.map +1 -1
- package/dist/envelope/reactive-config.js +2 -1
- package/dist/envelope/reactive-config.js.map +1 -1
- package/dist/envelope/tool-connector-scope.d.ts.map +1 -1
- package/dist/envelope/tool-connector-scope.js +4 -0
- package/dist/envelope/tool-connector-scope.js.map +1 -1
- package/dist/gateways/discord.d.ts.map +1 -1
- package/dist/gateways/discord.js +11 -6
- package/dist/gateways/discord.js.map +1 -1
- package/dist/gateways/image-analyzer.d.ts +5 -0
- package/dist/gateways/image-analyzer.d.ts.map +1 -1
- package/dist/gateways/image-analyzer.js +8 -0
- package/dist/gateways/image-analyzer.js.map +1 -1
- package/dist/gateways/message-router.d.ts +11 -1
- package/dist/gateways/message-router.d.ts.map +1 -1
- package/dist/gateways/message-router.js +146 -52
- package/dist/gateways/message-router.js.map +1 -1
- package/dist/gateways/slack.d.ts.map +1 -1
- package/dist/gateways/slack.js +6 -2
- package/dist/gateways/slack.js.map +1 -1
- package/dist/gateways/telegram-message-ledger.d.ts +8 -1
- package/dist/gateways/telegram-message-ledger.d.ts.map +1 -1
- package/dist/gateways/telegram-message-ledger.js +141 -24
- package/dist/gateways/telegram-message-ledger.js.map +1 -1
- package/dist/gateways/telegram.d.ts +2 -0
- package/dist/gateways/telegram.d.ts.map +1 -1
- package/dist/gateways/telegram.js +19 -12
- package/dist/gateways/telegram.js.map +1 -1
- package/dist/gateways/types.d.ts +1 -1
- package/dist/gateways/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/multi-agent/agent-process-manager.d.ts +14 -4
- package/dist/multi-agent/agent-process-manager.d.ts.map +1 -1
- package/dist/multi-agent/agent-process-manager.js +144 -47
- package/dist/multi-agent/agent-process-manager.js.map +1 -1
- package/dist/multi-agent/dashboard-agent-persona.d.ts +3 -3
- package/dist/multi-agent/dashboard-agent-persona.d.ts.map +1 -1
- package/dist/multi-agent/dashboard-agent-persona.js +10 -13
- package/dist/multi-agent/dashboard-agent-persona.js.map +1 -1
- package/dist/multi-agent/memory-agent-persona.d.ts +1 -1
- package/dist/multi-agent/memory-agent-persona.d.ts.map +1 -1
- package/dist/multi-agent/memory-agent-persona.js +1 -1
- package/dist/multi-agent/runtime-process.d.ts +3 -0
- package/dist/multi-agent/runtime-process.d.ts.map +1 -1
- package/dist/multi-agent/runtime-process.js +10 -2
- package/dist/multi-agent/runtime-process.js.map +1 -1
- package/dist/multi-agent/types.d.ts +12 -2
- package/dist/multi-agent/types.d.ts.map +1 -1
- package/dist/multi-agent/types.js.map +1 -1
- package/dist/multi-agent/wiki-agent-persona.d.ts +2 -2
- package/dist/multi-agent/wiki-agent-persona.js +2 -2
- package/dist/multi-agent/workflow-types.d.ts +1 -1
- package/dist/multi-agent/workflow-types.d.ts.map +1 -1
- package/dist/onboarding/complete-autonomous-prompt.d.ts +1 -1
- package/dist/onboarding/complete-autonomous-prompt.d.ts.map +1 -1
- package/dist/onboarding/complete-autonomous-prompt.js +9 -9
- package/dist/operator/board-slot-instructions.d.ts +1 -1
- package/dist/operator/board-slot-instructions.js +2 -2
- package/dist/operator/board-slot-instructions.js.map +1 -1
- package/dist/operator/briefs.d.ts +3 -0
- package/dist/operator/briefs.d.ts.map +1 -1
- package/dist/operator/briefs.js +64 -3
- package/dist/operator/briefs.js.map +1 -1
- package/dist/operator/console-brief.d.ts +6 -3
- package/dist/operator/console-brief.d.ts.map +1 -1
- package/dist/operator/console-brief.js +39 -9
- package/dist/operator/console-brief.js.map +1 -1
- package/dist/operator/external-lifecycle-candidates.d.ts +56 -0
- package/dist/operator/external-lifecycle-candidates.d.ts.map +1 -0
- package/dist/operator/external-lifecycle-candidates.js +415 -0
- package/dist/operator/external-lifecycle-candidates.js.map +1 -0
- package/dist/operator/external-lifecycle.d.ts +82 -0
- package/dist/operator/external-lifecycle.d.ts.map +1 -0
- package/dist/operator/external-lifecycle.js +27 -0
- package/dist/operator/external-lifecycle.js.map +1 -0
- package/dist/operator/file-coordination.d.ts +7 -0
- package/dist/operator/file-coordination.d.ts.map +1 -0
- package/dist/operator/file-coordination.js +84 -0
- package/dist/operator/file-coordination.js.map +1 -0
- package/dist/operator/operator-trigger-loop.d.ts +19 -4
- package/dist/operator/operator-trigger-loop.d.ts.map +1 -1
- package/dist/operator/operator-trigger-loop.js +151 -23
- package/dist/operator/operator-trigger-loop.js.map +1 -1
- package/dist/operator/pending-report-store.d.ts +62 -3
- package/dist/operator/pending-report-store.d.ts.map +1 -1
- package/dist/operator/pending-report-store.js +297 -40
- package/dist/operator/pending-report-store.js.map +1 -1
- package/dist/operator/report-carry-delivery.d.ts +35 -0
- package/dist/operator/report-carry-delivery.d.ts.map +1 -0
- package/dist/operator/report-carry-delivery.js +55 -0
- package/dist/operator/report-carry-delivery.js.map +1 -0
- package/dist/operator/report-carry.d.ts +50 -30
- package/dist/operator/report-carry.d.ts.map +1 -1
- package/dist/operator/report-carry.js +323 -71
- package/dist/operator/report-carry.js.map +1 -1
- package/dist/operator/situation-report.d.ts +30 -11
- package/dist/operator/situation-report.d.ts.map +1 -1
- package/dist/operator/situation-report.js +79 -35
- package/dist/operator/situation-report.js.map +1 -1
- package/dist/operator/task-ledger.d.ts +101 -0
- package/dist/operator/task-ledger.d.ts.map +1 -1
- package/dist/operator/task-ledger.js +599 -124
- package/dist/operator/task-ledger.js.map +1 -1
- package/dist/operator/temporal-runtime.d.ts.map +1 -1
- package/dist/operator/temporal-runtime.js +3 -1
- package/dist/operator/temporal-runtime.js.map +1 -1
- package/dist/operator/temporal-worker.js +1 -1
- package/dist/operator/trigger-author.d.ts +13 -1
- package/dist/operator/trigger-author.d.ts.map +1 -1
- package/dist/operator/trigger-author.js +35 -0
- package/dist/operator/trigger-author.js.map +1 -1
- package/dist/operator/worker-run.d.ts +1 -1
- package/dist/operator/worker-run.d.ts.map +1 -1
- package/dist/operator/worker-run.js +27 -9
- package/dist/operator/worker-run.js.map +1 -1
- package/dist/operator/workorder-consumer.d.ts +12 -1
- package/dist/operator/workorder-consumer.d.ts.map +1 -1
- package/dist/operator/workorder-consumer.js +125 -6
- package/dist/operator/workorder-consumer.js.map +1 -1
- package/dist/operator/workorder-hooks.d.ts +7 -2
- package/dist/operator/workorder-hooks.d.ts.map +1 -1
- package/dist/operator/workorder-hooks.js +22 -0
- package/dist/operator/workorder-hooks.js.map +1 -1
- package/dist/operator/workorder-publishers.d.ts +9 -2
- package/dist/operator/workorder-publishers.d.ts.map +1 -1
- package/dist/operator/workorder-publishers.js +167 -5
- package/dist/operator/workorder-publishers.js.map +1 -1
- package/dist/scheduler/cron-worker.d.ts +8 -4
- package/dist/scheduler/cron-worker.d.ts.map +1 -1
- package/dist/scheduler/cron-worker.js +56 -39
- package/dist/scheduler/cron-worker.js.map +1 -1
- package/dist/setup/setup-actions.d.ts +26 -0
- package/dist/setup/setup-actions.d.ts.map +1 -0
- package/dist/setup/setup-actions.js +371 -0
- package/dist/setup/setup-actions.js.map +1 -0
- package/dist/setup/setup-prompt.d.ts +1 -1
- package/dist/setup/setup-prompt.d.ts.map +1 -1
- package/dist/setup/setup-prompt.js +28 -33
- package/dist/setup/setup-prompt.js.map +1 -1
- package/dist/setup/setup-server.d.ts +6 -1
- package/dist/setup/setup-server.d.ts.map +1 -1
- package/dist/setup/setup-server.js +55 -9
- package/dist/setup/setup-server.js.map +1 -1
- package/dist/setup/setup-websocket.d.ts +14 -2
- package/dist/setup/setup-websocket.d.ts.map +1 -1
- package/dist/setup/setup-websocket.js +121 -37
- package/dist/setup/setup-websocket.js.map +1 -1
- package/package.json +2 -2
- package/public/setup.html +9 -6
- package/public/viewer/js/modules/agents.js +5 -4
- package/public/viewer/js/modules/settings.js +34 -10
- package/public/viewer/src/modules/agents.ts +5 -4
- package/public/viewer/src/modules/settings.ts +49 -11
- package/public/viewer/src/utils/api.ts +3 -2
- package/scripts/generate-gateway-tools.ts +13 -3
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { BindingCandidateIdentityInput, CandidateTaskSnapshot, ExistingExternalBindingSnapshot, ExternalLifecycleCandidateSet, ExternalLifecycleDiagnostic, ExternalLifecycleStatus, ExternalObservationSnapshot, LifecycleCandidateIdentityInput, TaskHintLookup } from './external-lifecycle.js';
|
|
2
|
+
export type { BindingCandidateIdentityInput, ExistingExternalBindingSnapshot, ExternalObservationSnapshot, TaskHintLookup, } from './external-lifecycle.js';
|
|
3
|
+
export declare const KAGEMUSHA_LIFECYCLE_OBSERVED_STATUSES: readonly ["pending", "in_progress", "review", "done", "completed", "cancelled", "dismissed"];
|
|
4
|
+
export interface RawExternalObservation {
|
|
5
|
+
event_index_id: unknown;
|
|
6
|
+
source_connector: unknown;
|
|
7
|
+
source_type: unknown;
|
|
8
|
+
source_id: unknown;
|
|
9
|
+
channel: unknown;
|
|
10
|
+
content_hash: unknown;
|
|
11
|
+
source_timestamp_ms: unknown;
|
|
12
|
+
operator_ingest_seq: unknown;
|
|
13
|
+
operator_observation_seq: unknown;
|
|
14
|
+
metadata_json: unknown;
|
|
15
|
+
}
|
|
16
|
+
export interface ExternalLifecycleDecisionInput {
|
|
17
|
+
readonly candidate_id: string;
|
|
18
|
+
readonly decision: 'bind' | 'decline' | 'apply' | 'retain';
|
|
19
|
+
readonly reason: string;
|
|
20
|
+
readonly expected_revision: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ClassifiedKagemushaObservation {
|
|
23
|
+
readonly observation: ExternalObservationSnapshot | null;
|
|
24
|
+
readonly diagnostic: ExternalLifecycleDiagnostic | null;
|
|
25
|
+
}
|
|
26
|
+
/** Exact status spellings emitted by the private Kagemusha task connector. */
|
|
27
|
+
export declare function mapKagemushaLifecycle(value: string): ExternalLifecycleStatus | null;
|
|
28
|
+
/**
|
|
29
|
+
* Validates the agent-authored half of a candidate decision. Identity, task,
|
|
30
|
+
* event, and status stay host-owned and are recovered from the opaque ID.
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateExternalLifecycleDecision(kind: 'binding' | 'lifecycle', value: unknown): asserts value is ExternalLifecycleDecisionInput;
|
|
33
|
+
/**
|
|
34
|
+
* Parses a single database row into an immutable, host-authored observation.
|
|
35
|
+
* The fixed summary intentionally derives from validated structured fields only.
|
|
36
|
+
*/
|
|
37
|
+
export declare function parseKagemushaObservation(row: RawExternalObservation): ExternalObservationSnapshot | null;
|
|
38
|
+
/**
|
|
39
|
+
* Classifies one untrusted database row once, so callers can preserve a
|
|
40
|
+
* bounded per-event diagnostic without re-parsing connector content.
|
|
41
|
+
*/
|
|
42
|
+
export declare function classifyKagemushaObservation(row: RawExternalObservation): ClassifiedKagemushaObservation;
|
|
43
|
+
/** Parses the only source identity accepted for private Kagemusha card evidence. */
|
|
44
|
+
export declare function parseKagemushaExternalSourceId(value: unknown): number | null;
|
|
45
|
+
/** Returns the sole permitted summary; malformed inputs cannot render arbitrary prose. */
|
|
46
|
+
export declare function kagemushaEvidenceSummary(taskId: unknown, observedStatus: unknown, sourceTimestampMs: unknown): string | null;
|
|
47
|
+
export declare function externalLifecycleCandidateId(input: BindingCandidateIdentityInput | LifecycleCandidateIdentityInput): string;
|
|
48
|
+
export declare function buildExternalLifecycleCandidateSet(input: {
|
|
49
|
+
eventIds: readonly string[];
|
|
50
|
+
observations: readonly ExternalObservationSnapshot[];
|
|
51
|
+
taskHints: TaskHintLookup;
|
|
52
|
+
tasksById: ReadonlyMap<number, CandidateTaskSnapshot>;
|
|
53
|
+
bindings: readonly ExistingExternalBindingSnapshot[];
|
|
54
|
+
receiptedCandidateIds: ReadonlySet<string>;
|
|
55
|
+
}): ExternalLifecycleCandidateSet;
|
|
56
|
+
//# sourceMappingURL=external-lifecycle-candidates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-lifecycle-candidates.d.ts","sourceRoot":"","sources":["../../src/operator/external-lifecycle-candidates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,6BAA6B,EAC7B,qBAAqB,EACrB,+BAA+B,EAC/B,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,EACvB,2BAA2B,EAE3B,+BAA+B,EAC/B,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,6BAA6B,EAC7B,+BAA+B,EAC/B,2BAA2B,EAC3B,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,qCAAqC,8FAQxC,CAAC;AA2BX,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,wBAAwB,EAAE,OAAO,CAAC;IAClC,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,WAAW,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,UAAU,EAAE,2BAA2B,GAAG,IAAI,CAAC;CACzD;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAEnF;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,SAAS,GAAG,WAAW,EAC7B,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,8BAA8B,CAsBjD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,sBAAsB,GAC1B,2BAA2B,GAAG,IAAI,CAEpC;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,sBAAsB,GAC1B,8BAA8B,CAmDhC;AAYD,oFAAoF;AACpF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAM5E;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,EACf,cAAc,EAAE,OAAO,EACvB,iBAAiB,EAAE,OAAO,GACzB,MAAM,GAAG,IAAI,CAUf;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,6BAA6B,GAAG,+BAA+B,GACrE,MAAM,CA2BR;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACrD,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACtD,QAAQ,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACrD,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5C,GAAG,6BAA6B,CAiHhC"}
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KAGEMUSHA_LIFECYCLE_OBSERVED_STATUSES = void 0;
|
|
4
|
+
exports.mapKagemushaLifecycle = mapKagemushaLifecycle;
|
|
5
|
+
exports.validateExternalLifecycleDecision = validateExternalLifecycleDecision;
|
|
6
|
+
exports.parseKagemushaObservation = parseKagemushaObservation;
|
|
7
|
+
exports.classifyKagemushaObservation = classifyKagemushaObservation;
|
|
8
|
+
exports.parseKagemushaExternalSourceId = parseKagemushaExternalSourceId;
|
|
9
|
+
exports.kagemushaEvidenceSummary = kagemushaEvidenceSummary;
|
|
10
|
+
exports.externalLifecycleCandidateId = externalLifecycleCandidateId;
|
|
11
|
+
exports.buildExternalLifecycleCandidateSet = buildExternalLifecycleCandidateSet;
|
|
12
|
+
const node_crypto_1 = require("node:crypto");
|
|
13
|
+
exports.KAGEMUSHA_LIFECYCLE_OBSERVED_STATUSES = [
|
|
14
|
+
'pending',
|
|
15
|
+
'in_progress',
|
|
16
|
+
'review',
|
|
17
|
+
'done',
|
|
18
|
+
'completed',
|
|
19
|
+
'cancelled',
|
|
20
|
+
'dismissed',
|
|
21
|
+
];
|
|
22
|
+
const KAGEMUSHA_STATUS_MAP = {
|
|
23
|
+
pending: 'pending',
|
|
24
|
+
in_progress: 'in_progress',
|
|
25
|
+
review: 'review',
|
|
26
|
+
done: 'done',
|
|
27
|
+
completed: 'done',
|
|
28
|
+
cancelled: 'cancelled',
|
|
29
|
+
dismissed: 'cancelled',
|
|
30
|
+
};
|
|
31
|
+
const KAGEMUSHA_METADATA_REQUIRED_KEYS = ['taskId', 'status', 'rawConnector'];
|
|
32
|
+
const KAGEMUSHA_METADATA_OPTIONAL_KEYS = [
|
|
33
|
+
'priority',
|
|
34
|
+
'deadline',
|
|
35
|
+
'sourceRoom',
|
|
36
|
+
'autoCreated',
|
|
37
|
+
];
|
|
38
|
+
const KAGEMUSHA_METADATA_KEYS = new Set([
|
|
39
|
+
...KAGEMUSHA_METADATA_REQUIRED_KEYS,
|
|
40
|
+
...KAGEMUSHA_METADATA_OPTIONAL_KEYS,
|
|
41
|
+
]);
|
|
42
|
+
const KAGEMUSHA_TASK_PRIORITIES = ['urgent', 'high', 'normal', 'low'];
|
|
43
|
+
const HEX_SHA256 = /^[a-fA-F0-9]{64}$/;
|
|
44
|
+
/** Exact status spellings emitted by the private Kagemusha task connector. */
|
|
45
|
+
function mapKagemushaLifecycle(value) {
|
|
46
|
+
return KAGEMUSHA_STATUS_MAP[value] ?? null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Validates the agent-authored half of a candidate decision. Identity, task,
|
|
50
|
+
* event, and status stay host-owned and are recovered from the opaque ID.
|
|
51
|
+
*/
|
|
52
|
+
function validateExternalLifecycleDecision(kind, value) {
|
|
53
|
+
if (!isPlainObject(value)) {
|
|
54
|
+
throw new Error('external lifecycle decision must be an object');
|
|
55
|
+
}
|
|
56
|
+
if (!exactKeys(value, ['candidate_id', 'decision', 'reason', 'expected_revision'])) {
|
|
57
|
+
throw new Error('external lifecycle decision has unknown or missing fields');
|
|
58
|
+
}
|
|
59
|
+
if (typeof value.candidate_id !== 'string' || !/^[a-f0-9]{64}$/.test(value.candidate_id)) {
|
|
60
|
+
throw new Error('external lifecycle decision candidate_id must be a sha256 hex ID');
|
|
61
|
+
}
|
|
62
|
+
const decisions = kind === 'binding' ? ['bind', 'decline'] : ['apply', 'retain'];
|
|
63
|
+
if (typeof value.decision !== 'string' || !decisions.includes(value.decision)) {
|
|
64
|
+
throw new Error(`external lifecycle ${kind} decision is invalid`);
|
|
65
|
+
}
|
|
66
|
+
if (typeof value.reason !== 'string' || value.reason.length < 1 || value.reason.length > 500) {
|
|
67
|
+
throw new Error('external lifecycle decision reason must contain 1-500 characters');
|
|
68
|
+
}
|
|
69
|
+
if (!isPositiveSafeInteger(value.expected_revision)) {
|
|
70
|
+
throw new Error('external lifecycle decision expected_revision must be a positive safe integer');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Parses a single database row into an immutable, host-authored observation.
|
|
75
|
+
* The fixed summary intentionally derives from validated structured fields only.
|
|
76
|
+
*/
|
|
77
|
+
function parseKagemushaObservation(row) {
|
|
78
|
+
return classifyKagemushaObservation(row).observation;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Classifies one untrusted database row once, so callers can preserve a
|
|
82
|
+
* bounded per-event diagnostic without re-parsing connector content.
|
|
83
|
+
*/
|
|
84
|
+
function classifyKagemushaObservation(row) {
|
|
85
|
+
const eventId = diagnosticEventId(row.event_index_id);
|
|
86
|
+
const contentSha256 = normalizeContentSha256(row.content_hash);
|
|
87
|
+
if (row.source_connector !== 'kagemusha') {
|
|
88
|
+
return classified(null, { eventId, code: 'unsupported_connector' });
|
|
89
|
+
}
|
|
90
|
+
if (row.source_type !== 'kanban_card') {
|
|
91
|
+
return classified(null, { eventId, code: 'unsupported_source_type' });
|
|
92
|
+
}
|
|
93
|
+
if (!isBoundedString(row.event_index_id) ||
|
|
94
|
+
!isBoundedString(row.source_id) ||
|
|
95
|
+
!isBoundedString(row.channel) ||
|
|
96
|
+
contentSha256 === null ||
|
|
97
|
+
!isIsoRenderableTimestamp(row.source_timestamp_ms) ||
|
|
98
|
+
!isPositiveSafeInteger(row.operator_ingest_seq) ||
|
|
99
|
+
!isPositiveSafeInteger(row.operator_observation_seq)) {
|
|
100
|
+
return classified(null, { eventId, code: 'malformed_metadata' });
|
|
101
|
+
}
|
|
102
|
+
const metadata = parseStrictKagemushaMetadata(row.metadata_json);
|
|
103
|
+
if (!metadata || parseKagemushaExternalSourceId(row.source_id) !== metadata.taskId) {
|
|
104
|
+
return classified(null, { eventId, code: 'malformed_metadata' });
|
|
105
|
+
}
|
|
106
|
+
if (!mapKagemushaLifecycle(metadata.status)) {
|
|
107
|
+
return classified(null, { eventId, code: 'unknown_status' });
|
|
108
|
+
}
|
|
109
|
+
const evidenceSummary = kagemushaEvidenceSummary(metadata.taskId, metadata.status, row.source_timestamp_ms);
|
|
110
|
+
if (evidenceSummary === null) {
|
|
111
|
+
return classified(null, { eventId, code: 'malformed_metadata' });
|
|
112
|
+
}
|
|
113
|
+
return classified(Object.freeze({
|
|
114
|
+
eventId,
|
|
115
|
+
connector: 'kagemusha',
|
|
116
|
+
sourceType: 'kanban_card',
|
|
117
|
+
externalSourceId: row.source_id,
|
|
118
|
+
channelPartition: row.channel,
|
|
119
|
+
contentSha256,
|
|
120
|
+
sourceTimestampMs: row.source_timestamp_ms,
|
|
121
|
+
operatorIngestSeq: row.operator_ingest_seq,
|
|
122
|
+
operatorObservationSeq: row.operator_observation_seq,
|
|
123
|
+
observedStatus: metadata.status,
|
|
124
|
+
evidenceSummary,
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
function normalizeContentSha256(value) {
|
|
128
|
+
if (typeof value === 'string') {
|
|
129
|
+
return HEX_SHA256.test(value) ? value.toLowerCase() : null;
|
|
130
|
+
}
|
|
131
|
+
if (value instanceof Uint8Array && value.byteLength === 32) {
|
|
132
|
+
return Buffer.from(value).toString('hex');
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
/** Parses the only source identity accepted for private Kagemusha card evidence. */
|
|
137
|
+
function parseKagemushaExternalSourceId(value) {
|
|
138
|
+
if (!isBoundedString(value))
|
|
139
|
+
return null;
|
|
140
|
+
const match = /^task:([1-9][0-9]*)$/.exec(value);
|
|
141
|
+
if (!match)
|
|
142
|
+
return null;
|
|
143
|
+
const taskId = Number(match[1]);
|
|
144
|
+
return isPositiveSafeInteger(taskId) ? taskId : null;
|
|
145
|
+
}
|
|
146
|
+
/** Returns the sole permitted summary; malformed inputs cannot render arbitrary prose. */
|
|
147
|
+
function kagemushaEvidenceSummary(taskId, observedStatus, sourceTimestampMs) {
|
|
148
|
+
if (!isPositiveSafeInteger(taskId) ||
|
|
149
|
+
typeof observedStatus !== 'string' ||
|
|
150
|
+
!mapKagemushaLifecycle(observedStatus) ||
|
|
151
|
+
!isIsoRenderableTimestamp(sourceTimestampMs)) {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
return `Kagemusha task ${taskId} reported ${observedStatus} at ${new Date(sourceTimestampMs).toISOString()}`;
|
|
155
|
+
}
|
|
156
|
+
function externalLifecycleCandidateId(input) {
|
|
157
|
+
const identity = input.kind === 'binding'
|
|
158
|
+
? [
|
|
159
|
+
input.kind,
|
|
160
|
+
input.eventId,
|
|
161
|
+
input.externalSourceId,
|
|
162
|
+
input.channelPartition,
|
|
163
|
+
input.contentSha256,
|
|
164
|
+
input.operatorObservationSeq,
|
|
165
|
+
input.taskId,
|
|
166
|
+
input.taskRevision,
|
|
167
|
+
]
|
|
168
|
+
: [
|
|
169
|
+
input.kind,
|
|
170
|
+
input.eventId,
|
|
171
|
+
input.externalSourceId,
|
|
172
|
+
input.channelPartition,
|
|
173
|
+
input.contentSha256,
|
|
174
|
+
input.operatorObservationSeq,
|
|
175
|
+
input.bindingId,
|
|
176
|
+
input.bindingRevision,
|
|
177
|
+
input.taskId,
|
|
178
|
+
input.taskRevision,
|
|
179
|
+
input.proposedStatus,
|
|
180
|
+
];
|
|
181
|
+
return (0, node_crypto_1.createHash)('sha256').update(JSON.stringify(identity)).digest('hex');
|
|
182
|
+
}
|
|
183
|
+
function buildExternalLifecycleCandidateSet(input) {
|
|
184
|
+
const eventIds = new Set(input.eventIds);
|
|
185
|
+
const diagnostics = [];
|
|
186
|
+
const observationsById = new Map();
|
|
187
|
+
for (const observation of input.observations) {
|
|
188
|
+
if (!eventIds.has(observation.eventId) || observationsById.has(observation.eventId))
|
|
189
|
+
continue;
|
|
190
|
+
observationsById.set(observation.eventId, observation);
|
|
191
|
+
}
|
|
192
|
+
for (const eventId of input.eventIds) {
|
|
193
|
+
if (!observationsById.has(eventId))
|
|
194
|
+
diagnostics.push({ eventId, code: 'missing_event' });
|
|
195
|
+
}
|
|
196
|
+
const bindingsByExternalSourceId = new Map();
|
|
197
|
+
for (const binding of input.bindings) {
|
|
198
|
+
if (binding.connector === 'kagemusha' &&
|
|
199
|
+
binding.sourceType === 'kanban_card' &&
|
|
200
|
+
!bindingsByExternalSourceId.has(binding.externalSourceId)) {
|
|
201
|
+
bindingsByExternalSourceId.set(binding.externalSourceId, binding);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
const eligible = [...observationsById.values()].filter((observation) => {
|
|
205
|
+
if (observation.connector !== 'kagemusha') {
|
|
206
|
+
diagnostics.push({ eventId: observation.eventId, code: 'unsupported_connector' });
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
if (observation.sourceType !== 'kanban_card') {
|
|
210
|
+
diagnostics.push({ eventId: observation.eventId, code: 'unsupported_source_type' });
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
if (!mapKagemushaLifecycle(observation.observedStatus)) {
|
|
214
|
+
diagnostics.push({ eventId: observation.eventId, code: 'unknown_status' });
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
return true;
|
|
218
|
+
});
|
|
219
|
+
const lifecycleCandidates = [];
|
|
220
|
+
const discovery = [];
|
|
221
|
+
for (const observation of eligible) {
|
|
222
|
+
const binding = bindingsByExternalSourceId.get(observation.externalSourceId);
|
|
223
|
+
if (!binding || observation.operatorObservationSeq <= binding.lastObservationSeq) {
|
|
224
|
+
if (!binding)
|
|
225
|
+
discovery.push(observation);
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const task = input.tasksById.get(binding.taskId);
|
|
229
|
+
if (!task) {
|
|
230
|
+
diagnostics.push({ eventId: observation.eventId, code: 'ambiguous_task_pair' });
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
const candidate = lifecycleCandidate(observation, binding, task);
|
|
234
|
+
if (input.receiptedCandidateIds.has(candidate.candidateId)) {
|
|
235
|
+
diagnostics.push({ eventId: observation.eventId, code: 'receipt_already_exists' });
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
lifecycleCandidates.push(candidate);
|
|
239
|
+
}
|
|
240
|
+
const discoveredTaskIdsByEventId = new Map();
|
|
241
|
+
const eventIdsByTaskId = new Map();
|
|
242
|
+
for (const observation of discovery) {
|
|
243
|
+
const direct = uniquePositiveTaskIds(input.taskHints.directTaskIdsByEventId.get(observation.eventId));
|
|
244
|
+
const effect = uniquePositiveTaskIds(input.taskHints.effectTaskIdsByEventId.get(observation.eventId));
|
|
245
|
+
const candidates = new Set([...direct, ...effect]);
|
|
246
|
+
const sourcesAgree = direct.size === 0 ||
|
|
247
|
+
effect.size === 0 ||
|
|
248
|
+
(direct.size === 1 && effect.size === 1 && sameSet(direct, effect));
|
|
249
|
+
if (!sourcesAgree || candidates.size !== 1) {
|
|
250
|
+
diagnostics.push({ eventId: observation.eventId, code: 'ambiguous_task_pair' });
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
const taskId = [...candidates][0];
|
|
254
|
+
if (!input.tasksById.has(taskId)) {
|
|
255
|
+
diagnostics.push({ eventId: observation.eventId, code: 'ambiguous_task_pair' });
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
discoveredTaskIdsByEventId.set(observation.eventId, candidates);
|
|
259
|
+
const events = eventIdsByTaskId.get(taskId) ?? new Set();
|
|
260
|
+
events.add(observation.eventId);
|
|
261
|
+
eventIdsByTaskId.set(taskId, events);
|
|
262
|
+
}
|
|
263
|
+
const bindingCandidates = [];
|
|
264
|
+
for (const observation of discovery) {
|
|
265
|
+
const taskIds = discoveredTaskIdsByEventId.get(observation.eventId);
|
|
266
|
+
if (!taskIds || taskIds.size !== 1)
|
|
267
|
+
continue;
|
|
268
|
+
const taskId = [...taskIds][0];
|
|
269
|
+
if (eventIdsByTaskId.get(taskId)?.size !== 1) {
|
|
270
|
+
diagnostics.push({ eventId: observation.eventId, code: 'ambiguous_task_pair' });
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
const task = input.tasksById.get(taskId);
|
|
274
|
+
const candidate = bindingCandidate(observation, task);
|
|
275
|
+
if (input.receiptedCandidateIds.has(candidate.candidateId)) {
|
|
276
|
+
diagnostics.push({ eventId: observation.eventId, code: 'receipt_already_exists' });
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
bindingCandidates.push(candidate);
|
|
280
|
+
}
|
|
281
|
+
return Object.freeze({
|
|
282
|
+
bindingCandidates: Object.freeze(bindingCandidates),
|
|
283
|
+
lifecycleCandidates: Object.freeze(lifecycleCandidates),
|
|
284
|
+
diagnostics: Object.freeze(diagnostics),
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
function bindingCandidate(observation, task) {
|
|
288
|
+
const identity = {
|
|
289
|
+
kind: 'binding',
|
|
290
|
+
eventId: observation.eventId,
|
|
291
|
+
externalSourceId: observation.externalSourceId,
|
|
292
|
+
channelPartition: observation.channelPartition,
|
|
293
|
+
contentSha256: observation.contentSha256,
|
|
294
|
+
operatorObservationSeq: observation.operatorObservationSeq,
|
|
295
|
+
taskId: task.taskId,
|
|
296
|
+
taskRevision: task.revision,
|
|
297
|
+
};
|
|
298
|
+
return Object.freeze({
|
|
299
|
+
...observation,
|
|
300
|
+
kind: 'binding',
|
|
301
|
+
candidateId: externalLifecycleCandidateId(identity),
|
|
302
|
+
taskId: task.taskId,
|
|
303
|
+
taskRevision: task.revision,
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
function lifecycleCandidate(observation, binding, task) {
|
|
307
|
+
const proposedStatus = mapKagemushaLifecycle(observation.observedStatus);
|
|
308
|
+
if (!proposedStatus)
|
|
309
|
+
throw new Error('lifecycle candidate requires a mapped Kagemusha status');
|
|
310
|
+
const identity = {
|
|
311
|
+
kind: 'lifecycle',
|
|
312
|
+
eventId: observation.eventId,
|
|
313
|
+
externalSourceId: observation.externalSourceId,
|
|
314
|
+
channelPartition: observation.channelPartition,
|
|
315
|
+
contentSha256: observation.contentSha256,
|
|
316
|
+
operatorObservationSeq: observation.operatorObservationSeq,
|
|
317
|
+
taskId: task.taskId,
|
|
318
|
+
taskRevision: task.revision,
|
|
319
|
+
bindingId: binding.bindingId,
|
|
320
|
+
bindingRevision: binding.bindingRevision,
|
|
321
|
+
proposedStatus,
|
|
322
|
+
};
|
|
323
|
+
return Object.freeze({
|
|
324
|
+
...observation,
|
|
325
|
+
kind: 'lifecycle',
|
|
326
|
+
candidateId: externalLifecycleCandidateId(identity),
|
|
327
|
+
bindingId: binding.bindingId,
|
|
328
|
+
bindingRevision: binding.bindingRevision,
|
|
329
|
+
taskId: task.taskId,
|
|
330
|
+
taskRevision: task.revision,
|
|
331
|
+
proposedStatus,
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
function parseStrictKagemushaMetadata(value) {
|
|
335
|
+
if (typeof value !== 'string')
|
|
336
|
+
return null;
|
|
337
|
+
let parsed;
|
|
338
|
+
try {
|
|
339
|
+
parsed = JSON.parse(value);
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
return null;
|
|
343
|
+
}
|
|
344
|
+
if (!isPlainObject(parsed)) {
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
const keys = Object.keys(parsed);
|
|
348
|
+
if (!KAGEMUSHA_METADATA_REQUIRED_KEYS.every((key) => hasOwn(parsed, key)) ||
|
|
349
|
+
!keys.every((key) => KAGEMUSHA_METADATA_KEYS.has(key))) {
|
|
350
|
+
return null;
|
|
351
|
+
}
|
|
352
|
+
if (!isPositiveSafeInteger(parsed.taskId) ||
|
|
353
|
+
!isBoundedString(parsed.status) ||
|
|
354
|
+
parsed.rawConnector !== 'kagemusha') {
|
|
355
|
+
return null;
|
|
356
|
+
}
|
|
357
|
+
if (hasOwn(parsed, 'priority') &&
|
|
358
|
+
(typeof parsed.priority !== 'string' || !KAGEMUSHA_TASK_PRIORITIES.includes(parsed.priority))) {
|
|
359
|
+
return null;
|
|
360
|
+
}
|
|
361
|
+
if (hasOwn(parsed, 'deadline') &&
|
|
362
|
+
parsed.deadline !== null &&
|
|
363
|
+
!isIsoRenderableTimestamp(parsed.deadline)) {
|
|
364
|
+
return null;
|
|
365
|
+
}
|
|
366
|
+
if (hasOwn(parsed, 'sourceRoom') &&
|
|
367
|
+
parsed.sourceRoom !== null &&
|
|
368
|
+
!isBoundedString(parsed.sourceRoom)) {
|
|
369
|
+
return null;
|
|
370
|
+
}
|
|
371
|
+
if (hasOwn(parsed, 'autoCreated') && typeof parsed.autoCreated !== 'boolean') {
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
return { taskId: parsed.taskId, status: parsed.status };
|
|
375
|
+
}
|
|
376
|
+
function classified(observation, diagnostic = null) {
|
|
377
|
+
return Object.freeze({
|
|
378
|
+
observation,
|
|
379
|
+
diagnostic: diagnostic === null ? null : Object.freeze(diagnostic),
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
function diagnosticEventId(value) {
|
|
383
|
+
return isBoundedString(value) ? value : 'invalid_event';
|
|
384
|
+
}
|
|
385
|
+
function isPlainObject(value) {
|
|
386
|
+
return (typeof value === 'object' &&
|
|
387
|
+
value !== null &&
|
|
388
|
+
!Array.isArray(value) &&
|
|
389
|
+
Object.getPrototypeOf(value) === Object.prototype);
|
|
390
|
+
}
|
|
391
|
+
function exactKeys(value, keys) {
|
|
392
|
+
const actual = Object.keys(value);
|
|
393
|
+
return actual.length === keys.length && actual.every((key) => keys.includes(key));
|
|
394
|
+
}
|
|
395
|
+
function hasOwn(value, key) {
|
|
396
|
+
return Object.prototype.hasOwnProperty.call(value, key);
|
|
397
|
+
}
|
|
398
|
+
function isBoundedString(value) {
|
|
399
|
+
return typeof value === 'string' && value.length >= 1 && value.length <= 1000;
|
|
400
|
+
}
|
|
401
|
+
function isPositiveSafeInteger(value) {
|
|
402
|
+
return Number.isSafeInteger(value) && value > 0;
|
|
403
|
+
}
|
|
404
|
+
function isIsoRenderableTimestamp(value) {
|
|
405
|
+
return (Number.isSafeInteger(value) &&
|
|
406
|
+
value > 0 &&
|
|
407
|
+
value <= 8_640_000_000_000_000);
|
|
408
|
+
}
|
|
409
|
+
function uniquePositiveTaskIds(ids) {
|
|
410
|
+
return new Set((ids ?? []).filter((id) => Number.isSafeInteger(id) && id > 0));
|
|
411
|
+
}
|
|
412
|
+
function sameSet(left, right) {
|
|
413
|
+
return left.size === right.size && [...left].every((value) => right.has(value));
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=external-lifecycle-candidates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-lifecycle-candidates.js","sourceRoot":"","sources":["../../src/operator/external-lifecycle-candidates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-authored contracts for reconciling Kagemusha card observations.
|
|
3
|
+
*
|
|
4
|
+
* TG-01/TG-05/TG-06: connector evidence is untrusted. These immutable
|
|
5
|
+
* candidate records are the only lifecycle-shaped data a board work order may
|
|
6
|
+
* carry; they do not expose connector titles, content, or arbitrary metadata.
|
|
7
|
+
*/
|
|
8
|
+
export declare const EXTERNAL_LIFECYCLE_STATUSES: readonly ["pending", "in_progress", "review", "done", "cancelled"];
|
|
9
|
+
export type ExternalLifecycleStatus = (typeof EXTERNAL_LIFECYCLE_STATUSES)[number];
|
|
10
|
+
export interface ExternalObservationSnapshot {
|
|
11
|
+
readonly eventId: string;
|
|
12
|
+
readonly connector: 'kagemusha';
|
|
13
|
+
readonly sourceType: 'kanban_card';
|
|
14
|
+
readonly externalSourceId: string;
|
|
15
|
+
readonly channelPartition: string;
|
|
16
|
+
readonly contentSha256: string;
|
|
17
|
+
readonly sourceTimestampMs: number;
|
|
18
|
+
readonly operatorIngestSeq: number;
|
|
19
|
+
readonly operatorObservationSeq: number;
|
|
20
|
+
readonly observedStatus: string;
|
|
21
|
+
readonly evidenceSummary: string;
|
|
22
|
+
}
|
|
23
|
+
export interface BindingCandidate extends ExternalObservationSnapshot {
|
|
24
|
+
readonly kind: 'binding';
|
|
25
|
+
readonly candidateId: string;
|
|
26
|
+
readonly taskId: number;
|
|
27
|
+
readonly taskRevision: number;
|
|
28
|
+
}
|
|
29
|
+
export interface LifecycleCandidate extends ExternalObservationSnapshot {
|
|
30
|
+
readonly kind: 'lifecycle';
|
|
31
|
+
readonly candidateId: string;
|
|
32
|
+
readonly bindingId: number;
|
|
33
|
+
readonly bindingRevision: number;
|
|
34
|
+
readonly taskId: number;
|
|
35
|
+
readonly taskRevision: number;
|
|
36
|
+
readonly proposedStatus: ExternalLifecycleStatus;
|
|
37
|
+
}
|
|
38
|
+
export interface ExternalLifecycleCandidateSet {
|
|
39
|
+
readonly bindingCandidates: readonly BindingCandidate[];
|
|
40
|
+
readonly lifecycleCandidates: readonly LifecycleCandidate[];
|
|
41
|
+
readonly diagnostics: readonly ExternalLifecycleDiagnostic[];
|
|
42
|
+
}
|
|
43
|
+
export declare const EXTERNAL_LIFECYCLE_DIAGNOSTIC_CODES: readonly ["missing_event", "unsupported_connector", "unsupported_source_type", "malformed_metadata", "unknown_status", "ambiguous_task_pair", "receipt_already_exists"];
|
|
44
|
+
export type ExternalLifecycleDiagnosticCode = (typeof EXTERNAL_LIFECYCLE_DIAGNOSTIC_CODES)[number];
|
|
45
|
+
export interface ExternalLifecycleDiagnostic {
|
|
46
|
+
readonly eventId: string;
|
|
47
|
+
readonly code: ExternalLifecycleDiagnosticCode;
|
|
48
|
+
}
|
|
49
|
+
export interface TaskHintLookup {
|
|
50
|
+
readonly directTaskIdsByEventId: ReadonlyMap<string, readonly number[]>;
|
|
51
|
+
readonly effectTaskIdsByEventId: ReadonlyMap<string, readonly number[]>;
|
|
52
|
+
}
|
|
53
|
+
export interface CandidateTaskSnapshot {
|
|
54
|
+
readonly taskId: number;
|
|
55
|
+
readonly revision: number;
|
|
56
|
+
}
|
|
57
|
+
export interface ExistingExternalBindingSnapshot {
|
|
58
|
+
readonly bindingId: number;
|
|
59
|
+
readonly bindingRevision: number;
|
|
60
|
+
readonly taskId: number;
|
|
61
|
+
readonly externalSourceId: string;
|
|
62
|
+
readonly connector: 'kagemusha';
|
|
63
|
+
readonly sourceType: 'kanban_card';
|
|
64
|
+
readonly lastObservationSeq: number;
|
|
65
|
+
}
|
|
66
|
+
export interface BindingCandidateIdentityInput {
|
|
67
|
+
readonly kind: 'binding';
|
|
68
|
+
readonly eventId: string;
|
|
69
|
+
readonly externalSourceId: string;
|
|
70
|
+
readonly channelPartition: string;
|
|
71
|
+
readonly contentSha256: string;
|
|
72
|
+
readonly operatorObservationSeq: number;
|
|
73
|
+
readonly taskId: number;
|
|
74
|
+
readonly taskRevision: number;
|
|
75
|
+
}
|
|
76
|
+
export interface LifecycleCandidateIdentityInput extends Omit<BindingCandidateIdentityInput, 'kind'> {
|
|
77
|
+
readonly kind: 'lifecycle';
|
|
78
|
+
readonly bindingId: number;
|
|
79
|
+
readonly bindingRevision: number;
|
|
80
|
+
readonly proposedStatus: ExternalLifecycleStatus;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=external-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-lifecycle.d.ts","sourceRoot":"","sources":["../../src/operator/external-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Host-authored contracts for reconciling Kagemusha card observations.
|
|
4
|
+
*
|
|
5
|
+
* TG-01/TG-05/TG-06: connector evidence is untrusted. These immutable
|
|
6
|
+
* candidate records are the only lifecycle-shaped data a board work order may
|
|
7
|
+
* carry; they do not expose connector titles, content, or arbitrary metadata.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.EXTERNAL_LIFECYCLE_DIAGNOSTIC_CODES = exports.EXTERNAL_LIFECYCLE_STATUSES = void 0;
|
|
11
|
+
exports.EXTERNAL_LIFECYCLE_STATUSES = [
|
|
12
|
+
'pending',
|
|
13
|
+
'in_progress',
|
|
14
|
+
'review',
|
|
15
|
+
'done',
|
|
16
|
+
'cancelled',
|
|
17
|
+
];
|
|
18
|
+
exports.EXTERNAL_LIFECYCLE_DIAGNOSTIC_CODES = [
|
|
19
|
+
'missing_event',
|
|
20
|
+
'unsupported_connector',
|
|
21
|
+
'unsupported_source_type',
|
|
22
|
+
'malformed_metadata',
|
|
23
|
+
'unknown_status',
|
|
24
|
+
'ambiguous_task_pair',
|
|
25
|
+
'receipt_already_exists',
|
|
26
|
+
];
|
|
27
|
+
//# sourceMappingURL=external-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-lifecycle.js","sourceRoot":"","sources":["../../src/operator/external-lifecycle.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEU,QAAA,2BAA2B,GAAG;IACzC,SAAS;IACT,aAAa;IACb,QAAQ;IACR,MAAM;IACN,WAAW;CACH,CAAC;AAwCE,QAAA,mCAAmC,GAAG;IACjD,eAAe;IACf,uBAAuB;IACvB,yBAAyB;IACzB,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB;IACrB,wBAAwB;CAChB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-process serialization for a single filesystem-backed operator record.
|
|
3
|
+
* SQLite's OS-held lock is crash-safe; unlike a pathname lock it never needs a
|
|
4
|
+
* stale-owner heuristic or a lock-file unlink.
|
|
5
|
+
*/
|
|
6
|
+
export declare function withFileCoordinationTransaction<T>(path: string, resourceName: string, operation: () => T): T;
|
|
7
|
+
//# sourceMappingURL=file-coordination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-coordination.d.ts","sourceRoot":"","sources":["../../src/operator/file-coordination.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyBH,wBAAgB,+BAA+B,CAAC,CAAC,EAC/C,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,CAAC,GACjB,CAAC,CA0DH"}
|