openmeld 0.3.222 → 0.3.224
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/dist/{add-me-membership-Wc69O6rA.js → add-me-membership-CGISMRPF.js} +2 -2
- package/dist/{add-me-membership-Wc69O6rA.js.map → add-me-membership-CGISMRPF.js.map} +1 -1
- package/dist/{agents-B8zhQnGw.js → agents-CR7BebgO.js} +12 -12
- package/dist/{agents-B8zhQnGw.js.map → agents-CR7BebgO.js.map} +1 -1
- package/dist/{api-client-foundation-DTiFoGpI.js → api-client-foundation-CqbIn_de.js} +1 -1
- package/dist/{api-client-foundation-DnJ_JYli.js → api-client-foundation-DpVwrgh-.js} +3 -3
- package/dist/{api-client-foundation-DnJ_JYli.js.map → api-client-foundation-DpVwrgh-.js.map} +1 -1
- package/dist/auth-session-BJfKu74u.js +4 -0
- package/dist/{auth-session-nhS8jyux.js → auth-session-uEk_Tx6T.js} +8 -8
- package/dist/auth-session-uEk_Tx6T.js.map +1 -0
- package/dist/{base-url-CMBApK1J.js → base-url-DXrUiSMI.js} +1 -1
- package/dist/{base-url-D7uE_xTo.js → base-url-DvjOkKPs.js} +2 -2
- package/dist/{base-url-D7uE_xTo.js.map → base-url-DvjOkKPs.js.map} +1 -1
- package/dist/{channel-ggx0o_aG.js → channel-B2fD2_be.js} +4 -4
- package/dist/{channel-ggx0o_aG.js.map → channel-B2fD2_be.js.map} +1 -1
- package/dist/{cli-binary-manifest-DiUulkp0.js → cli-binary-manifest-CT5X05lk.js} +30 -4
- package/dist/cli-binary-manifest-CT5X05lk.js.map +1 -0
- package/dist/{command-Bz9x7V2T.js → command-CQ9XRwqf.js} +22 -165
- package/dist/command-CQ9XRwqf.js.map +1 -0
- package/dist/{computer-connection-M3N6plkj.js → computer-connection-Dm7iTnRK.js} +2 -2
- package/dist/{computer-connection-M3N6plkj.js.map → computer-connection-Dm7iTnRK.js.map} +1 -1
- package/dist/{computer-connection-review-DY5BK_27.js → computer-connection-review-RHAoddSS.js} +6 -6
- package/dist/{computer-connection-review-DY5BK_27.js.map → computer-connection-review-RHAoddSS.js.map} +1 -1
- package/dist/{computer-disconnect-DR1WDSPK.js → computer-disconnect-BWRsge_2.js} +10 -10
- package/dist/{computer-disconnect-DR1WDSPK.js.map → computer-disconnect-BWRsge_2.js.map} +1 -1
- package/dist/{computer-setup-continuation-2gs8z-nB.js → computer-setup-continuation-BOCRH0qq.js} +4 -4
- package/dist/{computer-setup-continuation-2gs8z-nB.js.map → computer-setup-continuation-BOCRH0qq.js.map} +1 -1
- package/dist/context-Bdh3nAzw.js +162 -0
- package/dist/context-Bdh3nAzw.js.map +1 -0
- package/dist/{control-plane-e3W6PD2M.js → control-plane-rTE2rHZ5.js} +2 -2
- package/dist/{control-plane-e3W6PD2M.js.map → control-plane-rTE2rHZ5.js.map} +1 -1
- package/dist/{daemon-device-id-DWO9_QW6.js → daemon-device-id-B1Af2Zmn.js} +344 -36
- package/dist/daemon-device-id-B1Af2Zmn.js.map +1 -0
- package/dist/{daemon-frame-transport-D2-tazuK.js → daemon-frame-transport-WiB73yhT.js} +519 -12
- package/dist/daemon-frame-transport-WiB73yhT.js.map +1 -0
- package/dist/{daemon-lifecycle-journal-DyKx1xzm.js → daemon-lifecycle-journal-CDZLWgMj.js} +11 -11
- package/dist/daemon-lifecycle-journal-CDZLWgMj.js.map +1 -0
- package/dist/{daemon-runtime-lease-BUr4qsLo.js → daemon-runtime-lease-1LMeZ6IS.js} +2 -2
- package/dist/{daemon-runtime-lease-BUr4qsLo.js.map → daemon-runtime-lease-1LMeZ6IS.js.map} +1 -1
- package/dist/{daemon-runtime-lease-C9X8xV_F.js → daemon-runtime-lease-Bz0ucJj3.js} +1 -1
- package/dist/{daemon-service-contract-BpOBMGX0.js → daemon-service-contract-GLmAxsq-.js} +4 -4
- package/dist/{daemon-service-contract-BpOBMGX0.js.map → daemon-service-contract-GLmAxsq-.js.map} +1 -1
- package/dist/{daemon-service-manager-HL4VKbIU.js → daemon-service-manager-C8RUCMDo.js} +9 -7
- package/dist/daemon-service-manager-C8RUCMDo.js.map +1 -0
- package/dist/{daemon-service-manager-B-QrDe5p.js → daemon-service-manager-CU-79a4z.js} +1 -1
- package/dist/{daemon-service-runtime-bKt0YjC7.js → daemon-service-runtime-CBJtgM4P.js} +397 -51
- package/dist/daemon-service-runtime-CBJtgM4P.js.map +1 -0
- package/dist/{daemon-service-update-coordinator-D8O1uTtu.js → daemon-service-update-coordinator-0LB_XGVZ.js} +48 -33
- package/dist/daemon-service-update-coordinator-0LB_XGVZ.js.map +1 -0
- package/dist/{daemon-state-B44aq2nm.js → daemon-state-Ca0WK5x0.js} +3 -3
- package/dist/{daemon-state-B44aq2nm.js.map → daemon-state-Ca0WK5x0.js.map} +1 -1
- package/dist/{dist-B07ziN_u.js → dist-BeJcIdCZ.js} +25 -17
- package/dist/dist-BeJcIdCZ.js.map +1 -0
- package/dist/dist-C32frPV2.js +4 -0
- package/dist/{dist-B2EauBG6.js → dist-YbTZ-Y-2.js} +16 -12
- package/dist/dist-YbTZ-Y-2.js.map +1 -0
- package/dist/{elapsed-time-Ooo4IC25.js → elapsed-time-q8lSPcfm.js} +6 -6
- package/dist/{elapsed-time-Ooo4IC25.js.map → elapsed-time-q8lSPcfm.js.map} +1 -1
- package/dist/{entry-DeIRMCiW.js → entry-CpS6tnIk.js} +12 -12
- package/dist/{entry-DeIRMCiW.js.map → entry-CpS6tnIk.js.map} +1 -1
- package/dist/{installation-inventory-DThnBEhV.js → installation-inventory-C5FsAvrf.js} +5 -5
- package/dist/{installation-inventory-DThnBEhV.js.map → installation-inventory-C5FsAvrf.js.map} +1 -1
- package/dist/{installer-D2bWZT88.js → installer-054NLJg6.js} +2 -2
- package/dist/{installer-D2bWZT88.js.map → installer-054NLJg6.js.map} +1 -1
- package/dist/io-DT66typ4.js +16 -0
- package/dist/io-DT66typ4.js.map +1 -0
- package/dist/{local-components-B6SCXZf9.js → local-components-DleLEzSU.js} +2 -1
- package/dist/local-components-DleLEzSU.js.map +1 -0
- package/dist/{lock-Bsl_ElWy.js → lock-iue1J2xy.js} +8 -5
- package/dist/lock-iue1J2xy.js.map +1 -0
- package/dist/{cli-space-api-CQtKu9Zt.js → meta-api-B1k3mwHN.js} +203 -19
- package/dist/meta-api-B1k3mwHN.js.map +1 -0
- package/dist/{openmeld-BQy0nMox.js → openmeld-BFO3sfC_.js} +93 -1027
- package/dist/openmeld-BFO3sfC_.js.map +1 -0
- package/dist/openmeld-dev.js +1 -1
- package/dist/{openmeld-environment-target-B6HqY0_a.js → openmeld-environment-target-BBn5Ko6p.js} +3 -3
- package/dist/{openmeld-environment-target-B6HqY0_a.js.map → openmeld-environment-target-BBn5Ko6p.js.map} +1 -1
- package/dist/{openmeld-maintenance-worker-BSODPHbn.js → openmeld-maintenance-worker-Ce4ehQ-c.js} +15 -14
- package/dist/openmeld-maintenance-worker-Ce4ehQ-c.js.map +1 -0
- package/dist/{openmeld-tools-update-join-BfY0GnDs.js → openmeld-tools-update-join-D24llJ9L.js} +4 -4
- package/dist/{openmeld-tools-update-join-BfY0GnDs.js.map → openmeld-tools-update-join-D24llJ9L.js.map} +1 -1
- package/dist/{openmeld-tools-update-process-frame-B-XB4dmO.js → openmeld-tools-update-process-frame-BtFKp70p.js} +2 -2
- package/dist/{openmeld-tools-update-process-frame-B-XB4dmO.js.map → openmeld-tools-update-process-frame-BtFKp70p.js.map} +1 -1
- package/dist/{openmeld-tools-update-process-frame-j-RXwFsK.js → openmeld-tools-update-process-frame-DbEZ3fEh.js} +1 -1
- package/dist/openmeld.js +9 -5
- package/dist/openmeld.js.map +1 -1
- package/dist/{prepare-provider-runtime-CWZcuMF6.js → prepare-provider-runtime-MB-BxOgt.js} +3342 -1327
- package/dist/prepare-provider-runtime-MB-BxOgt.js.map +1 -0
- package/dist/{prepare-session-executor-CkDxstsf.js → prepare-session-executor-zvSZ6jqy.js} +29 -28
- package/dist/prepare-session-executor-zvSZ6jqy.js.map +1 -0
- package/dist/{presenter-BcxiQyJg.js → presenter-MJ5YgsOT.js} +3 -13
- package/dist/presenter-MJ5YgsOT.js.map +1 -0
- package/dist/{process-channel-BQwtOlRc.js → process-channel-CgbduFCz.js} +2 -2
- package/dist/{process-channel-BQwtOlRc.js.map → process-channel-CgbduFCz.js.map} +1 -1
- package/dist/process-environment-BWSFeUu6.js +49 -0
- package/dist/process-environment-BWSFeUu6.js.map +1 -0
- package/dist/process-identity-BQLdaZdB.js +190 -0
- package/dist/process-identity-BQLdaZdB.js.map +1 -0
- package/dist/process-launch-B0pHlkV_.js +173 -0
- package/dist/process-launch-B0pHlkV_.js.map +1 -0
- package/dist/{published-production-safety-dp-fOmmB.js → published-production-safety-C40hKrBA.js} +2 -2
- package/dist/{published-production-safety-dp-fOmmB.js.map → published-production-safety-C40hKrBA.js.map} +1 -1
- package/dist/{runtime-BYaFkkLK.js → runtime-D6jItuQ-.js} +155 -702
- package/dist/runtime-D6jItuQ-.js.map +1 -0
- package/dist/{runtime-agent-controller-reporting-submission-BUUub9_1.js → runtime-agent-controller-reporting-submission-D9ysbi7R.js} +9 -9
- package/dist/{runtime-agent-controller-reporting-submission-BUUub9_1.js.map → runtime-agent-controller-reporting-submission-D9ysbi7R.js.map} +1 -1
- package/dist/{runtime-reporting-health-state-BgwfrH7f.js → runtime-reporting-health-state-DA-_vW-n.js} +2210 -60
- package/dist/runtime-reporting-health-state-DA-_vW-n.js.map +1 -0
- package/dist/{runtime-transport-Cc_RN-PL.js → runtime-transport-YIYHSJPn.js} +99 -14
- package/dist/runtime-transport-YIYHSJPn.js.map +1 -0
- package/dist/{service-CfO38_a-.js → service-Dz2MsvGr.js} +126 -550
- package/dist/service-Dz2MsvGr.js.map +1 -0
- package/dist/{service-account-admission-Dy2W3n3_.js → service-account-admission-BfdJ-kKR.js} +18 -10
- package/dist/service-account-admission-BfdJ-kKR.js.map +1 -0
- package/dist/{service-account-authorization-DKpIpxXo.js → service-account-authorization-DZbUOD29.js} +6 -6
- package/dist/{service-account-authorization-DKpIpxXo.js.map → service-account-authorization-DZbUOD29.js.map} +1 -1
- package/dist/{service-account-control-CCPQAZzn.js → service-account-control-DCMOKXDT.js} +16 -16
- package/dist/service-account-control-DCMOKXDT.js.map +1 -0
- package/dist/{service-control-capabilities-C9UHSMPz.js → service-control-capabilities-3_bdeHXu.js} +1 -1
- package/dist/{service-control-capabilities-xGylBNoH.js → service-control-capabilities-Bb738e_d.js} +19 -15
- package/dist/service-control-capabilities-Bb738e_d.js.map +1 -0
- package/dist/{service-control-carrier-capability-DDNyE5cB.js → service-control-carrier-capability-gMk5gMKU.js} +11 -4
- package/dist/service-control-carrier-capability-gMk5gMKU.js.map +1 -0
- package/dist/{state-CQG3k9eh.js → state-GxF_KAM1.js} +4 -4
- package/dist/{state-CQG3k9eh.js.map → state-GxF_KAM1.js.map} +1 -1
- package/dist/{upgrade-D5FxGbh1.js → upgrade-DfJwCD5H.js} +52 -32
- package/dist/upgrade-DfJwCD5H.js.map +1 -0
- package/dist/upgrade-DgmYWeNu.js +4 -0
- package/dist/windows/openmeld-windows-process.exe +0 -0
- package/dist/windows-artifact-DJ9DKjfc.js +16 -0
- package/dist/windows-artifact-DJ9DKjfc.js.map +1 -0
- package/dist/windows-task-command-COu_6Ke3.js +74 -0
- package/dist/windows-task-command-COu_6Ke3.js.map +1 -0
- package/dist/windows-task-entry-CtRpUbiK.js +50 -0
- package/dist/windows-task-entry-CtRpUbiK.js.map +1 -0
- package/dist/{windows-user-task-Bx2yYnOM.js → windows-user-task-B8NcRg_u.js} +1 -1
- package/dist/{windows-user-task-CRGbKggi.js → windows-user-task-Io5QuEVR.js} +108 -51
- package/dist/windows-user-task-Io5QuEVR.js.map +1 -0
- package/package.json +12 -12
- package/skills/openmeld-cli/playbooks/space-ops.md +9 -3
- package/skills/openmeld-cli/references/commands.md +0 -1
- package/dist/auth-session-D8dbMpaK.js +0 -4
- package/dist/auth-session-nhS8jyux.js.map +0 -1
- package/dist/cli-binary-manifest-DiUulkp0.js.map +0 -1
- package/dist/cli-space-api-CQtKu9Zt.js.map +0 -1
- package/dist/command-Bz9x7V2T.js.map +0 -1
- package/dist/context-l_31Mn4X.js +0 -473
- package/dist/context-l_31Mn4X.js.map +0 -1
- package/dist/daemon-device-id-DWO9_QW6.js.map +0 -1
- package/dist/daemon-frame-transport-D2-tazuK.js.map +0 -1
- package/dist/daemon-lifecycle-journal-DyKx1xzm.js.map +0 -1
- package/dist/daemon-service-manager-HL4VKbIU.js.map +0 -1
- package/dist/daemon-service-runtime-bKt0YjC7.js.map +0 -1
- package/dist/daemon-service-update-coordinator-D8O1uTtu.js.map +0 -1
- package/dist/dist-B07ziN_u.js.map +0 -1
- package/dist/dist-B2EauBG6.js.map +0 -1
- package/dist/dist-DhWI1iyi.js +0 -4
- package/dist/local-components-B6SCXZf9.js.map +0 -1
- package/dist/lock-Bsl_ElWy.js.map +0 -1
- package/dist/openmeld-BQy0nMox.js.map +0 -1
- package/dist/openmeld-maintenance-worker-BSODPHbn.js.map +0 -1
- package/dist/prepare-provider-runtime-CWZcuMF6.js.map +0 -1
- package/dist/prepare-session-executor-CkDxstsf.js.map +0 -1
- package/dist/presenter-BcxiQyJg.js.map +0 -1
- package/dist/process-identity-CNus0e6E.js +0 -146
- package/dist/process-identity-CNus0e6E.js.map +0 -1
- package/dist/runtime-BYaFkkLK.js.map +0 -1
- package/dist/runtime-reporting-health-state-BgwfrH7f.js.map +0 -1
- package/dist/runtime-transport-Cc_RN-PL.js.map +0 -1
- package/dist/service-CfO38_a-.js.map +0 -1
- package/dist/service-account-admission-Dy2W3n3_.js.map +0 -1
- package/dist/service-account-control-CCPQAZzn.js.map +0 -1
- package/dist/service-control-capabilities-xGylBNoH.js.map +0 -1
- package/dist/service-control-carrier-capability-DDNyE5cB.js.map +0 -1
- package/dist/upgrade-D5FxGbh1.js.map +0 -1
- package/dist/upgrade-DhFEu0k6.js +0 -4
- package/dist/windows-user-task-CRGbKggi.js.map +0 -1
|
@@ -1,59 +1,57 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { c as toSpaceDispatchLookupUrl, h as toSpaceResultUrl, i as toSpaceContractUrl, l as toSpaceDispatchTraceUrl, r as toSpaceBoardUrl, t as normalizeBaseUrl } from "./urls-CY2uzH2-.js";
|
|
4
|
-
import { D as isLocalMachineFailureError, F as accountsDir, M as accountProfileSpaceCacheDir, N as accountProfileViewPath, O as toRecognizedLocalMachineFailureError,
|
|
5
|
-
import { $r as agentActivityInventorySessionStatusSchema, $t as
|
|
4
|
+
import { D as isLocalMachineFailureError, F as accountsDir, M as accountProfileSpaceCacheDir, N as accountProfileViewPath, O as toRecognizedLocalMachineFailureError, S as LocalMachineFailureError, T as createOrphanedSetupConcurrencyIssue, X as openMeldBinDir, Y as openMeldBackupsDir, _ as resolveCliContext, _t as systemDir, a as isOpenMeldOrphanedLockError, at as profileViewPath, b as formatLaneScopeSentence, c as releaseLockSync, ct as resolveOpenMeldCliEntryNameFromArgv, d as runWithHeldLock, gt as spacesDir, ht as skillsDir, i as isOpenMeldLockError, it as profileDir, k as formatLocalMachineIssueMessage, l as repairOrphanedLegacyLocks, lt as resolveOpenMeldEnvPreset, m as OPENMELD_CLI_CONTEXT_ENV_KEY, p as LEGACY_OPENMELD_AGENT_SESSION_ENV_KEY, q as normalizeAccountKey, r as buildOpenMeldOrphanedLockAction, t as acquireLock, tt as openMeldRootDir, u as resolveOpenMeldOrphanedLockIssue, ut as resolveOpenMeldRootDir, w as createActiveSetupConcurrencyIssue, x as resolveOpenMeldLaneDescriptor } from "./lock-iue1J2xy.js";
|
|
5
|
+
import { $r as agentActivityInventorySessionStatusSchema, $t as createPluginsApi, Ar as observabilityWakeTraceSelectorSchema, Bt as createCurrentDeviceApi, Cr as SPACE_DISPATCH_TRACE_RESPONSE_CONTRACT_VERSION_HEADER, Dr as spaceDispatchTraceAttemptStatusSchema, Er as resolveSpaceDispatchTraceRootCause, Ht as createFeedbackApi, It as createCenterAgentApi, Jn as OPENMELD_HEADER_PROFILE_ID, Jr as ownerComputerDiagnosticsSchema, Mt as createAgentActivityApi, Nt as createAgentProfileBindingApi, Or as spaceDispatchTraceDispatchStatusSchema, Pn as toStructuredApiClientFailure, Pt as createAgentProfileExecutionModeApi, Qr as agentActivityInventorySessionOriginSchema, Rt as createComputerFileAccessApi, Tr as resolveRuntimeCoordinatorHeadStatusRootCause, Vr as resolvedSpaceMemberProfileSchema, Xr as summarizeComputerFileAccessPolicy, Yr as projectOwnerComputerLocalRuntimes, Yt as createOrganizationApi, Zn as OPENMELD_HEADER_SPACE_ADDRESSING_VERSION, Zt as createOrganizationSkillsApi, an as createRoutinesApi, bi as agentActivitySnapshotQuerySchema, br as submitFeedbackIssueRequestSchema, dr as agentProfileCreationConfigurationSchema, ei as agentActivitySessionInventoryQuerySchema, en as createPrepareReadinessApi, fr as createAgentProfileCreationRequestBodySchema, jr as projectObservabilityWakeCorrelation, kr as spaceDispatchTraceResponseSchema, ni as localAgentSessionProviderSchema, nr as pluginActionRequestSchema, rn as createProjectsApi, tr as spaceEntryTargetSchema, ur as DEFAULT_AGENT_PROFILE_CREATION_CONFIGURATION, vi as agentActivityProviderSchema, wn as postSpaceWorkHandoff, wr as projectSpaceDispatchTraceFinalVisibleOutcome, yi as agentActivitySessionStatusSchema } from "./dist-BeJcIdCZ.js";
|
|
6
6
|
import { c as agentControllerConversationRefSchema } from "./controller-contract-DAOCaefz.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { C as updateAuthSessionActiveOrganization, T as runMacOsNativeKeychainHelperIfRequested, a as beginAuthSessionTransition, d as getAuthSessionState, f as getCurrentAuthOwnerUserId, g as normalizeStoredActiveOrganization, n as AuthSessionRecoveryInProgressError, o as buildStoredAuthSessionIdentity, s as clearAuthSession, t as AuthSessionChangedBeforeTransitionError, u as getAuthSessionMetadata } from "./auth-session-
|
|
10
|
-
import { L as nonEmptyTrimmedStringFromUnknown, O as openMeldRuntimeProfileIdSchema, w as dispatchExecutionSchema, z as trimmedStringFromUnknown } from "./control-plane-
|
|
11
|
-
import { t as computerConnectionIntentSchema } from "./computer-connection-
|
|
12
|
-
import { d as readSelectedSkillDocument, r as ensureLocalSkills } from "./state-
|
|
13
|
-
import { $ as buildAuthStatusSnapshot, B as resolveDaemonServiceParticipationStatus, C as buildProfileWorkspaceRows,
|
|
14
|
-
import { C as
|
|
15
|
-
import { B as
|
|
16
|
-
import { H as buildInstallSelfJsonPayload, U as performManagedInstall, r as readCurrentDaemonRuntimeContext } from "./daemon-service-runtime-
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { C as
|
|
21
|
-
import {
|
|
7
|
+
import { At as ensureOpenMeldManagedProfileWorkspace, C as createModelCatalogReadSession, E as resolveProfileWorkspaceRuntime, Et as listBuiltinAgentsRegistryEntries, I as listAgentTargetStates, It as setCustomProfileWorkspace, K as notifyDaemonRouteCatalogChanged, Lt as setOpenMeldManagedProfileWorkspace, Mt as readProfileWorkspaceConfig, Nr as compareAgentControllerRefsForDisplay, O as syncDeviceRuntimeStateProjection, Pt as resolveConfiguredProfileWorkspacePath, Q as resolveLocalRegistryAgentIdFromAgentControllerRef, Rt as validateCustomProfileWorkspacePath, S as syncProfileWorkspaceState, Sr as resolveNativeAgentControllerPermissionModeForController, St as canonicalizeLocalProjectPath, _t as removeProjectConnection, br as resolveAgentProfileEditCapabilities, bt as setDefaultProjectConnection, fr as listAgentControllerPermissionModeOptions, ft as listProjectBindings, hr as projectPeopleComputersToLegacyLocalRuntimes, j as resolveAgentProfilePrimaryAgentControllerReport, jt as normalizeCustomProfileWorkspacePath, k as createPrimaryBindingReadSession, lr as getAgentControllerPermissionModeDisplayMetadata, mr as peopleComputerContainsDevice, mt as migrateProjectBindingStore, pr as parseAgentControllerRef, pt as listProjectConnectionsWithStatus, sr as createAgentExecutionStatusDisplayRows, ur as getAgentControllerPermissionModeFieldLabel, ut as bindProject, vr as resolveAgentControllerPermissionModeForController, xr as resolveEvidenceSyncHealth, xt as unbindProject, yr as resolveAgentExecutionStatus, yt as runIfAgentActivityBindingGenerationIsCurrent, zt as describeProfileWorkspacePathValidationFailure } from "./prepare-provider-runtime-MB-BxOgt.js";
|
|
8
|
+
import { $t as isSpaceFileTextEditable, An as spaceContractSchema, Bt as centerAgentInteractionSourceSchema, Gt as spaceWorkSelectionSchema, Jt as SPACE_FILE_MAX_SIZE_BYTES, Kr as START_BOUNDED_ID_SCHEMA, Kt as spaceWorkingCopyResultSchema, Tn as spaceThreadContextSchema, Un as messageEnvelopeSchema, Ut as spaceWorkHandoffSchema, Yr as START_TRIMMED_NON_EMPTY_STRING_SCHEMA, Yt as SPACE_FILE_RAW_UPLOAD_MAX_BYTES, _r as runtimeTransportAdmissionEvidenceSchema, di as openMeldRequestContextSchema, fr as clientMessageIdSchema, in as resolveSpaceFileMimeType, kn as spaceContractFieldsSchema, lr as agentInteractionResponseSchema, ui as openMeldProfileIdSchema, zt as spaceStatusSchema } from "./runtime-transport-YIYHSJPn.js";
|
|
9
|
+
import { C as updateAuthSessionActiveOrganization, T as runMacOsNativeKeychainHelperIfRequested, a as beginAuthSessionTransition, d as getAuthSessionState, f as getCurrentAuthOwnerUserId, g as normalizeStoredActiveOrganization, n as AuthSessionRecoveryInProgressError, o as buildStoredAuthSessionIdentity, s as clearAuthSession, t as AuthSessionChangedBeforeTransitionError, u as getAuthSessionMetadata } from "./auth-session-uEk_Tx6T.js";
|
|
10
|
+
import { L as nonEmptyTrimmedStringFromUnknown, O as openMeldRuntimeProfileIdSchema, w as dispatchExecutionSchema, z as trimmedStringFromUnknown } from "./control-plane-rTE2rHZ5.js";
|
|
11
|
+
import { t as computerConnectionIntentSchema } from "./computer-connection-Dm7iTnRK.js";
|
|
12
|
+
import { d as readSelectedSkillDocument, r as ensureLocalSkills } from "./state-GxF_KAM1.js";
|
|
13
|
+
import { $ as buildAuthStatusSnapshot, B as resolveDaemonServiceParticipationStatus, C as buildProfileWorkspaceRows, E as emitDaemonAgentOverview, F as emitCliJsonEnvelope, G as ensureCommandAuthenticationOrCancel, H as validateLocalProjectConnectionPath, I as runDaemonStartupPreflight, J as runAuthLogout, K as evaluateCommandAuthentication, M as buildHumanErrorCopy, N as renderHumanErrorCard, O as shouldEmitAgentOverview, P as renderHumanTextErrorCard, Q as buildAuthStatusRows, R as resolveLocalComponentsStatus, S as buildProfileWorkspacePresentation, V as LocalProjectConnectionError, W as buildCommandAuthenticationPromptMessage, X as runAuthStatus, Y as runAuthMenu, Z as exchangeOneTimeTokenAuthSession, a as runDaemonBackgroundStartForDecision, at as promptTextEntry, c as runDaemonInterrupt, ct as finishCurrentCommandCheckScope, dt as resetCurrentCommandCheckState, et as formatActiveOrganizationLabel, f as runDaemonSnapshot, ft as startCurrentCommandCheckScope, g as runDaemonUninstall, h as runDaemonTeardownStrict, i as runDaemonAutostart, j as runDaemonStartDecisionPrompt, l as runDaemonReinstall, lt as getCurrentCommandCheckState, m as runDaemonStop, n as isManagedSystemServiceBootstrapRun, nt as renderInfoCard, o as runDaemonCancel, ot as isReturnKeypress, p as runDaemonStatusFlow, q as runAuthLogin, r as runDaemon, rt as renderTextInfoCard, s as runDaemonInstall, st as runInteractivePrompt, t as bestEffortStopCurrentLaneDaemonService, u as runDaemonRunAfterEntryChecks, ut as isCurrentCommandCheckScopeActive, w as reconcileCliVersionView, x as resolveServiceParticipationReadiness, y as formatServiceParticipationReadinessLabel, z as writeInstalledLocalComponentsSnapshot } from "./service-Dz2MsvGr.js";
|
|
14
|
+
import { C as readAgentActivityOutboxHealth, Cn as cliJsonSkillsLoadEnvelopeSchema, Dn as organizationJoinLinkErrorResponseSchema, Dt as upsertSpaceConfig, En as getOrganizationJoinLinkResponseSchema, Ft as buildSignalMessageReadProjection, Mt as buildDispatchResultReplyWorkflowProjection, Nt as buildPublicSpaceEntryUrl, On as organizationJoinLinkManagementQuerySchema, Pt as buildSignalIndex, Sn as cliJsonSkillsListEnvelopeSchema, T as removeProjectOutbox, Tn as acceptOrganizationJoinLinkBodySchema, Ut as buildUpdatesReplyWorkflowProjection, Vt as buildSpaceRoundReadProjection, Zt as formatRemovedCcRelationMessage, et as readRecentDaemonDispatchJournalEvents, g as readCodexSessionTitles, gt as inspectSpaceCacheFile, h as normalizeSharedSessionTitle, jt as buildDispatchResultMessageReadProjection, kn as revokeOrganizationJoinLinkResponseSchema, m as resolveObservedAgentActivityBinding, p as buildAgentActivityEvent, qt as createSpaceMemberIdentityIndex, v as enqueueAgentActivityHookEvent, wn as cliJsonSkillsShowEnvelopeSchema, xn as cliJsonOutputEnvelopeSchema, y as removeProjectInbox } from "./daemon-frame-transport-WiB73yhT.js";
|
|
15
|
+
import { A as readControllerTaskLifecycleOutboxHealth, B as uninstallAgentActivityIntegrations, D as readAgentActivityContextForPath, I as defaultManagedIntegrationPaths, L as installAgentActivityIntegrations, M as registerAgentActivityRoute, N as resolveAgentActivityRouteForPath, O as removeAgentActivityContextCache, P as unregisterAgentActivityRoute, R as readAgentActivityIntegrationStatus, a as fetchSpaceUpdates, c as materializeOrganizationSkillRelease, d as runSpaceActionHelp, f as runSpaceActionReply, g as runSpaceActionWake, h as runSpaceActionTargets, j as isAgentActivityRouteRegistered, k as enqueueControllerTaskLifecycleEventWhileLocked, m as runSpaceActionStatus, o as createSpaceWorkingCopies, p as runSpaceActionSilent, s as downloadWorkingCopyFile, t as readRuntimeReportingHealthState, u as runSpaceActionMcpServer, w as syncLocalAgentActivity, z as resolveAgentActivityDispatcherCommand } from "./runtime-reporting-health-state-DA-_vW-n.js";
|
|
16
|
+
import { G as readManagedCliInstallation, H as buildInstallSelfJsonPayload, U as performManagedInstall, r as readCurrentDaemonRuntimeContext } from "./daemon-service-runtime-CBJtgM4P.js";
|
|
17
|
+
import { B as requireOpenMeldProfile, H as createOpenMeldAgentProfile, J as resolveOpenMeldProfile, K as listOpenMeldProfiles, U as createOpenMeldHumanProfile, V as resolveOpenMeldProfileOrNull, W as deleteOpenMeldProfile, X as updateOpenMeldProfile, at as buildAgentAuthenticationGuide, ct as buildHumanAuthenticationCard, dt as resolveAuthenticationGuidance, et as alignSelectedOpenMeldProfileStorage, ft as resolveAuthenticationGuidanceFromError, it as setSelectedOpenMeldProfileId, lt as createAuthenticationError, nt as clearSelectedOpenMeldProfileId, pt as resolveAuthenticationGuidanceFromMessage, q as primeOpenMeldProfilesSessionCache, rt as getSelectedOpenMeldProfileId, z as isSelectedOpenMeldProfileRequiredError } from "./daemon-device-id-B1Af2Zmn.js";
|
|
18
|
+
import { a as activateWindowsManagedCommand } from "./process-identity-BQLdaZdB.js";
|
|
19
|
+
import { A as formatDeviceReplyReadinessLabel, B as resolveGatewayChainReadiness, Bt as assessCliUpdate, It as assessServerRequiredVersion, J as getSetupFlowCopy, K as buildDaemonRouteObservationPresentation$1, Mt as classifyDaemonServiceRunStartability, N as mapAgentReplyReadinessToLegacyAutoReply, Nt as classifyDaemonServiceWakeability, O as resolveCurrentReplyReadinessSnapshot, Pt as resolveCurrentDaemonExpectedVersion, T as resolveDaemonServiceFreshnessWarning, U as resolveOpenClawLocalDiagnosticsValue, Vt as isCliUpdateCheckApplicable, _ as resolveServiceReadinessFromServiceStatus, ft as inspectDaemonServiceInventory, j as formatHumanReplyReadinessReason$1, k as formatAgentReplyReadinessLabel, q as buildOnboardingPlan, t as runPendingDaemonServiceUpdate, zt as readCurrentLocalDeviceId } from "./daemon-service-update-coordinator-0LB_XGVZ.js";
|
|
20
|
+
import { $ as ensureAgentProfileRuntimeBinding, A as assertFullSignalIdArgument, B as resolveAgentProfileSetup, C as buildFormalSignalReadPayload, D as resolveOrganizationVisibilityLabel, E as resolveLinkAccessLabel, F as emitSpaceCliAgentOverview, G as renderOpenMeldHeader, H as colorizeDisplayProfileLabel, I as prepareLocalAgentReadiness, J as resolveSpaceSendText, K as renderOpenMeldLogo, L as buildReplyReadinessGuidance, M as prepareAuthenticatedSpaceCommandContext, N as resolveOpenMeldProfileForSpaceCommand, O as parseEnvelope, P as emitSpaceAgentOverview, Q as resolveCreateProfileName, R as resolveHumanControllerDisplayName, S as buildFormalDispatchResultReadPayload, T as formatHumanReadTargetList, U as printOpenMeldBanner, V as colorizeAgentLabel, W as renderOpenMeldBrandBlockLines, X as createProfileByKind, Y as resolveSpaceTaskSelection, Z as resolveCreateProfileKind, _ as emitHumanReadSignalsTextProjection, a as runSpaceDelete, b as loadSpaceSignalIndexOrNull, c as runSpaceLeave, d as runSpaceRemoveMembers, et as assessActionParticipationCandidate, f as runSpaceSend, g as buildHumanReadSignalsTranscriptItems, h as runSpaceWriteWithPasswordRetry, i as runSpaceCreate, j as assertValidSpaceIdTarget, k as isSpaceCommandOutputHandledError, l as runSpaceList, m as runSpaceReadWithPasswordRetry, n as promptAndConfirmSpacePassword, o as runSpaceHistory, p as runSpaceWatch, q as renderOpenMeldTagline, r as runSpaceAddMembers, s as runSpaceJoin, t as buildCreateSpacePasswordPromptConfig, u as runSpacePassword, v as buildIdentityOnlyMembersSnapshotForReadProjection, w as buildHumanReplyContextSummary, x as toSpaceMetaUpsertInput, y as loadSpaceIdentityDirectoryOrNull, z as persistAgentTransportSelection } from "./command-CQ9XRwqf.js";
|
|
21
|
+
import { f as canonicalizeAllowedActions, i as areAllowedActionsEquivalent, o as buildAgentFacingPublicationModeGuideLines, t as OPENMELD_AGENT_MENTAL_MODEL_LINES } from "./dist-YbTZ-Y-2.js";
|
|
22
|
+
import { E as updateConfiguredStartV1OnboardingState, S as setConfiguredSkillsConfig, a as resolveBaseUrl, b as setConfiguredBaseUrl, c as resolveExplicitGatewayUrlOrThrow, g as getConfiguredSkillsConfig, m as getConfiguredOnboardingDisclaimerAcceptedAt, o as resolveBaseUrlOrNull, u as alignRuntimeConfigStorage, w as updateConfiguredOnboardingConfig } from "./base-url-DvjOkKPs.js";
|
|
22
23
|
import { n as resolveOpenMeldDistribution, t as isBinaryDistribution } from "./distribution-BDQT2ilb.js";
|
|
23
|
-
import { A as getDaemonStatus } from "./daemon-state-
|
|
24
|
-
import { i as readDaemonServiceContract } from "./daemon-service-contract-
|
|
24
|
+
import { A as getDaemonStatus } from "./daemon-state-Ca0WK5x0.js";
|
|
25
|
+
import { i as readDaemonServiceContract } from "./daemon-service-contract-GLmAxsq-.js";
|
|
25
26
|
import { a as formatOpenMeldCliTextBlock, c as resolveSetupFollowUpCliEntryCommand, i as formatOpenMeldCliLine, l as resolveUserFacingCliEntryCommand, n as formatOpenMeldCliCommand, r as formatOpenMeldCliCommands, s as formatProfileAwareOpenMeldCliCommands, t as formatInlineOpenMeldCliCommands } from "./cli-entry-command-CR_9QU1i.js";
|
|
26
|
-
import { r as resolveAuthBaseUrl, t as resolveOpenMeldEnvironmentTarget } from "./openmeld-environment-target-
|
|
27
|
-
import { r as runServiceAccountCarrier } from "./service-account-authorization-
|
|
28
|
-
import { b as requestLocalAgentActivitySync, d as compareSemver, f as ensureVersionStateReady, l as OPENMELD_VERSION, y as LocalDaemonControlPlaneClientError } from "./daemon-lifecycle-journal-
|
|
29
|
-
import { a as
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import { n as
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
import { C as
|
|
37
|
-
import { n as
|
|
38
|
-
import {
|
|
39
|
-
import {
|
|
27
|
+
import { r as resolveAuthBaseUrl, t as resolveOpenMeldEnvironmentTarget } from "./openmeld-environment-target-BBn5Ko6p.js";
|
|
28
|
+
import { r as runServiceAccountCarrier } from "./service-account-authorization-DZbUOD29.js";
|
|
29
|
+
import { b as requestLocalAgentActivitySync, d as compareSemver, f as ensureVersionStateReady, l as OPENMELD_VERSION, y as LocalDaemonControlPlaneClientError } from "./daemon-lifecycle-journal-CDZLWgMj.js";
|
|
30
|
+
import { a as setProfileDefaultView, i as getProfileDefaultView, n as resolveRuntimeContext, r as resolveViewProfileKey, t as parseCliViewMode } from "./context-Bdh3nAzw.js";
|
|
31
|
+
import { n as outJsonLine, r as outLine, t as errLine } from "./io-DT66typ4.js";
|
|
32
|
+
import { n as sanitizeTerminalDisplayText, r as formatMessage, t as createPresenter } from "./presenter-MJ5YgsOT.js";
|
|
33
|
+
import { Ct as formatDualViewGuideForDisplay, D as createSpaceContractSetGuideError, E as createSpaceAliasTargetGuideError, J as createStartAuthenticationGuideError, K as createSpaceUpdatesGuideError, L as createSpaceRemoveMembersGuideError, M as createSpaceMenuGuideError, P as createSpacePublicationSetGuideError, R as createSpaceResultGuideError, S as createResetConfirmationGuideError, St as DualViewGuideError, T as createSpaceAddMembersGuideError, Tt as formatAgentOverviewPayload, U as createSpaceSubcommandTargetGuideError, W as createSpaceTargetGuideError, Z as getCommandHintsFromContract, b as createProfileCreateGuideError, ct as registerSkillsTargetSelectionOptions, dt as getCliVersionInfo, et as registerSpaceMemberSelectionOptions, ft as registerDaemonControlTargetOptions, g as canUseInteractivePrompts, j as createSpaceLeaveGuideError, mt as registerAuthLoginRequestOptions, q as createStartAgentIdentityGuideError, rt as SPACE_ADD_MEMBERS_PROGRESS_HEARTBEAT_MS, v as createDoctorFailedGuideError, wt as buildDualViewGuideMessage, x as createProfileMenuGuideError, y as createProfileActionGuideError, yt as registerBuiltinAgentSelectionOptions } from "./elapsed-time-q8lSPcfm.js";
|
|
34
|
+
import { c as buildRequestAuthHeaders, d as buildOpenMeldRequestContextFromProfile, n as fetchSpaceRequestWithTimeout, p as deriveAuthBaseUrlFromGatewayUrl, s as buildOpenMeldRequestContextHeadersWithAuth, t as createCliApiClientFoundation } from "./api-client-foundation-DpVwrgh-.js";
|
|
35
|
+
import { n as collectSkillsReadinessSnapshot } from "./installation-inventory-C5FsAvrf.js";
|
|
36
|
+
import { t as runServiceAccountControl } from "./service-account-control-DCMOKXDT.js";
|
|
37
|
+
import { C as buildNoLocalAgentsNoticeLines, D as recoverInterruptedComputerAuthHandoff, E as formatComputerAuthCleanupFailureSuffix, O as exchangeComputerAuthorizationGrant, S as buildLocalAgentsGuideUrl, T as emitUnusedSetupSessionCleanupWarning, _ as runStartLocalAgentsEnable, a as assertSetupServiceUpdateComplete, b as submitSelectedAgentControllerReports, c as collectObservedDeviceMetadata, d as collectStartLocalReadiness, f as runSkillsCheck$1, g as runSkillsUpdate, h as runSkillsUninstall, i as runPrepareSessionExecutor, j as writePrepareSessionSetupBootstrapResult, k as revokePreparedAuthSession, l as createSetupProgressReporter, m as runSkillsInstall, n as reportPrepareHandoffStopped, o as shouldForceSetupServiceRefresh, p as runSkillsEnsure, r as resolvePrepareSessionForHandoff, s as syncLocalSetupCurrentDeviceTargetFromServiceContract, t as connectPrepareSessionStream, u as resolveControllingTerminalSession, v as isCliOutputHandledError, w as confirmContinueWithoutLocalAgents, x as appendLocalAgentsGuideUrl, y as assertSelectedAgentControllerReportSubmissionsAccepted } from "./prepare-session-executor-zvSZ6jqy.js";
|
|
38
|
+
import { C as resolveGatewayWebOrigin, T as runDaemonServiceParticipationGate, _ as promptSearchSelect, a as runAgentsCustomRemove, c as runAgentsDisable, d as runAgentsManage, f as runAgentsRepair, h as promptSearchMultiselect, i as runAgentsCustomList, l as runAgentsEnable, m as formatTransportModeDisplay, n as runAgentsConfig, o as runAgentsCustomUpdate, p as runAgentsShow, r as runAgentsCustomAdd, s as runAgentsDetect, t as runAgents, u as runAgentsList, w as resolveSpaceWebGatewayOrigin } from "./agents-CR7BebgO.js";
|
|
39
|
+
import { n as submitProfileRuntimeAgentControllerReport, r as submitRuntimeAgentControllerReport } from "./runtime-agent-controller-reporting-submission-D9ysbi7R.js";
|
|
40
|
+
import { a as runUpgrade, c as OPENMELD_UPGRADE_FAILURE_HINTS, l as OPENMELD_UPGRADE_METADATA_RECOVERY_HINTS, n as isUpgradeOutputHandledError, o as emitTopLevelAgentOverview, s as emitTopLevelCliAgentOverview, t as UPGRADE_INTERNAL_ALIGN_SERVICE_FLAG$1 } from "./upgrade-DfJwCD5H.js";
|
|
41
|
+
import { c as toStructuredGatewayFailure, f as createCliSpaceApi, h as readDispatchOwnedRuntimeGuard, l as parseJsonResponse, n as updateSpaceMeta, o as readGatewayJsonResponse, p as assertDispatchOwnedRuntimePublicWriteAllowed, s as readGatewayTextResponse, t as fetchSpaceMeta, x as readDispatchSpaceActionContextFromEnv } from "./meta-api-B1k3mwHN.js";
|
|
40
42
|
import { createHash, randomUUID } from "node:crypto";
|
|
41
43
|
import { homedir, tmpdir } from "node:os";
|
|
42
44
|
import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
43
|
-
import {
|
|
45
|
+
import { appendFile, mkdir, open, readFile, readdir, realpath, rename, rm, stat, writeFile } from "node:fs/promises";
|
|
44
46
|
import * as z$1 from "zod/v4";
|
|
45
|
-
import {
|
|
46
|
-
import { constants, openAsBlob, readFileSync, realpathSync } from "node:fs";
|
|
47
|
+
import { openAsBlob, realpathSync } from "node:fs";
|
|
47
48
|
import process$1 from "node:process";
|
|
48
49
|
import { execFile, spawn } from "node:child_process";
|
|
49
|
-
import { setTimeout as setTimeout$1 } from "node:timers/promises";
|
|
50
50
|
import { promisify } from "node:util";
|
|
51
|
+
import { setTimeout as setTimeout$1 } from "node:timers/promises";
|
|
51
52
|
import pc from "picocolors";
|
|
52
53
|
import { cancel, confirm, intro, isCancel, multiselect, note, outro, select, spinner, text } from "@clack/prompts";
|
|
53
|
-
import { performance } from "node:perf_hooks";
|
|
54
54
|
import { Command, Option } from "commander";
|
|
55
|
-
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
56
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
57
55
|
//#region ../../packages/schemas/dist/organization-join-request.js
|
|
58
56
|
const id$1 = z$1.string().trim().min(1).max(255);
|
|
59
57
|
const organizationJoinRequestSchema = z$1.strictObject({
|
|
@@ -360,9 +358,7 @@ const spaceBoardResponseSchema = z$1.strictObject({
|
|
|
360
358
|
workingNow: z$1.array(spaceBoardWorkingExecutionSchema),
|
|
361
359
|
recentOutcomes: z$1.array(spaceBoardRecentOutcomeSchema).max(10)
|
|
362
360
|
});
|
|
363
|
-
|
|
364
|
-
//#region ../../packages/schemas/dist/schemas/http/space-contract.js
|
|
365
|
-
const patchSpaceContractBodySchema = spaceContractFieldsSchema.pick({
|
|
361
|
+
const patchSpaceContractBodySchema = spaceContractFieldsSchema.extend({ allowedActions: spaceContractFieldsSchema.shape.allowedActions.transform((actions) => actions.filter((action) => action !== "post_status")).refine((actions) => actions.length > 0, { message: "The status tool is retired. Choose reply (post_message), stay_silent, or both; no replacement permission is granted automatically." }) }).pick({
|
|
366
362
|
dispatchPolicy: true,
|
|
367
363
|
publicationMode: true,
|
|
368
364
|
allowedActions: true,
|
|
@@ -503,50 +499,6 @@ z$1.strictObject({
|
|
|
503
499
|
});
|
|
504
500
|
const getSpaceDispatchResultResponseSchema = dispatchResultSchema;
|
|
505
501
|
//#endregion
|
|
506
|
-
//#region ../../packages/schemas/dist/schemas/space-mesh/dispatch-space-action-receipt.js
|
|
507
|
-
const dispatchSpaceActionClosedReasonCodeSchema = z$1.enum(["space_action.context_expired", "space_action.context_mismatch"]);
|
|
508
|
-
const dispatchSpaceActionReceiptSchema = z$1.discriminatedUnion("status", [
|
|
509
|
-
z$1.strictObject({
|
|
510
|
-
status: z$1.literal("proposal_saved_locally"),
|
|
511
|
-
actionType: z$1.enum([
|
|
512
|
-
"post_message",
|
|
513
|
-
"post_status",
|
|
514
|
-
"stay_silent"
|
|
515
|
-
]),
|
|
516
|
-
attemptId: z$1.string().min(1),
|
|
517
|
-
contextId: z$1.string().min(1),
|
|
518
|
-
dispatchId: z$1.string().min(1),
|
|
519
|
-
recordedAtMs: z$1.number().int().nonnegative(),
|
|
520
|
-
contextState: z$1.enum(["active", "expired"]),
|
|
521
|
-
coordinatorAcceptance: z$1.literal("unconfirmed"),
|
|
522
|
-
publication: z$1.literal("unconfirmed")
|
|
523
|
-
}),
|
|
524
|
-
z$1.strictObject({
|
|
525
|
-
status: z$1.literal("rejected_closed"),
|
|
526
|
-
reasonCode: dispatchSpaceActionClosedReasonCodeSchema,
|
|
527
|
-
coordinatorAcceptance: z$1.literal("unconfirmed"),
|
|
528
|
-
publication: z$1.literal("unconfirmed")
|
|
529
|
-
}),
|
|
530
|
-
z$1.strictObject({
|
|
531
|
-
status: z$1.literal("outcome_unknown"),
|
|
532
|
-
reasonCode: z$1.literal("space_action.recording_outcome_unknown"),
|
|
533
|
-
coordinatorAcceptance: z$1.literal("unconfirmed"),
|
|
534
|
-
publication: z$1.literal("unconfirmed")
|
|
535
|
-
})
|
|
536
|
-
]);
|
|
537
|
-
const dispatchSpaceActionToolResultSchema = z$1.strictObject({ receipt: dispatchSpaceActionReceiptSchema });
|
|
538
|
-
//#endregion
|
|
539
|
-
//#region ../../packages/schemas/dist/schemas/space-mesh/dispatch-space-history.js
|
|
540
|
-
const dispatchSpaceHistoryRequestSchema = z$1.strictObject({});
|
|
541
|
-
const dispatchSpaceHistoryResultSchema = z$1.strictObject({
|
|
542
|
-
spaceId: z$1.string().min(1),
|
|
543
|
-
sourceSignalId: z$1.string().min(1),
|
|
544
|
-
beforeCount: z$1.literal(20),
|
|
545
|
-
afterCount: z$1.literal(0),
|
|
546
|
-
signals: z$1.array(z$1.record(z$1.string(), z$1.unknown())).max(21),
|
|
547
|
-
nextCursor: z$1.string().min(1).nullable()
|
|
548
|
-
});
|
|
549
|
-
//#endregion
|
|
550
502
|
//#region ../../packages/schemas/dist/space-invitation.js
|
|
551
503
|
const id = z$1.string().trim().min(1).max(200);
|
|
552
504
|
const spaceInvitationRequestSchema = z$1.discriminatedUnion("action", [
|
|
@@ -8884,6 +8836,13 @@ function getManagedCliCommandActivationNotice(activation) {
|
|
|
8884
8836
|
async function activateManagedCliCommand(input) {
|
|
8885
8837
|
const env = input.env ?? process.env;
|
|
8886
8838
|
if (resolveOpenMeldEnvPreset({ env }) !== "prod" || normalizeOptionalText$5(env["OPENMELD_HOME"])) return { status: "not_applicable" };
|
|
8839
|
+
if (process.platform === "win32") return await withManagedCliCommandActivationLock({
|
|
8840
|
+
env,
|
|
8841
|
+
run: async () => ({
|
|
8842
|
+
status: await activateWindowsManagedCommand(openMeldBinDir({ env })),
|
|
8843
|
+
registryPath: "HKEY_CURRENT_USER\\Environment\\Path"
|
|
8844
|
+
})
|
|
8845
|
+
});
|
|
8887
8846
|
const home = normalizeOptionalText$5(env.HOME);
|
|
8888
8847
|
if (!home) return {
|
|
8889
8848
|
shell: normalizeOptionalText$5(env.SHELL),
|
|
@@ -9433,7 +9392,7 @@ async function updateAgentProfilePrimaryBindingAgentControllerPermissionMode(inp
|
|
|
9433
9392
|
//#region src/system/agent-profile-binding-model-selection.ts
|
|
9434
9393
|
async function updateAgentProfilePrimaryBindingModelSelection(input) {
|
|
9435
9394
|
const api = createAgentProfileBindingApi(createCliApiClientFoundation(await resolveBaseUrl()));
|
|
9436
|
-
const modelId = normalizeRequiredText
|
|
9395
|
+
const modelId = normalizeRequiredText(input.modelId, "--model is required.");
|
|
9437
9396
|
const reasoningLevel = normalizeOptionalText$4(input.reasoningLevel);
|
|
9438
9397
|
return await api.updatePrimaryBindingModelSelection({
|
|
9439
9398
|
agentProfileId: input.profile.openMeldProfileId,
|
|
@@ -9442,7 +9401,7 @@ async function updateAgentProfilePrimaryBindingModelSelection(input) {
|
|
|
9442
9401
|
...reasoningLevel ? { reasoningLevel } : {}
|
|
9443
9402
|
});
|
|
9444
9403
|
}
|
|
9445
|
-
function normalizeRequiredText
|
|
9404
|
+
function normalizeRequiredText(value, message) {
|
|
9446
9405
|
const normalized = normalizeOptionalText$4(value);
|
|
9447
9406
|
if (!normalized) throw new Error(message);
|
|
9448
9407
|
return normalized;
|
|
@@ -12110,6 +12069,7 @@ async function runServiceTrace(input, deps = {}) {
|
|
|
12110
12069
|
const evidenceSyncHealth = agentExecutionStatus ? buildServiceTraceEvidenceSyncHealth({ projection: agentExecutionStatus }) : null;
|
|
12111
12070
|
const daemonDispatchJournal = resolveDaemonDispatchJournalEvidence(selection.dispatchId);
|
|
12112
12071
|
const agentSummary = buildAgentTraceCompactSummary({ trace: traceResponse.trace });
|
|
12072
|
+
const admissionRejections = resolveAdmissionRejections(traceResponse.trace);
|
|
12113
12073
|
const traceReadinessGuidance = shouldExposeCurrentReadinessGuidance(traceResponse.trace) ? targetContext.guidance : null;
|
|
12114
12074
|
const payload = {
|
|
12115
12075
|
...traceResponse.serviceConnectionDiagnostics ? { serviceConnectionDiagnostics: traceResponse.serviceConnectionDiagnostics } : {},
|
|
@@ -12140,6 +12100,7 @@ async function runServiceTrace(input, deps = {}) {
|
|
|
12140
12100
|
},
|
|
12141
12101
|
currentProfileWorkspace: targetContext.currentProfileWorkspace,
|
|
12142
12102
|
agentSummary,
|
|
12103
|
+
admissionRejections,
|
|
12143
12104
|
guidance: traceReadinessGuidance
|
|
12144
12105
|
};
|
|
12145
12106
|
if (runtime.resolvedView === "agent") {
|
|
@@ -12157,6 +12118,7 @@ async function runServiceTrace(input, deps = {}) {
|
|
|
12157
12118
|
targetProfile: payload.targetProfile,
|
|
12158
12119
|
projectFailureContext: traceResponse.trace?.resultInbox?.projectFailureContext ?? null,
|
|
12159
12120
|
agentSummary,
|
|
12121
|
+
admissionRejections,
|
|
12160
12122
|
diagnosticSummary: buildAgentTraceSummary({
|
|
12161
12123
|
dispatchId: traceResponse.query.dispatchId,
|
|
12162
12124
|
trace: traceResponse.trace
|
|
@@ -13036,6 +12998,20 @@ function parseRuntimeCoordinatorEventPayload(event) {
|
|
|
13036
12998
|
return null;
|
|
13037
12999
|
}
|
|
13038
13000
|
}
|
|
13001
|
+
function resolveAdmissionRejections(trace) {
|
|
13002
|
+
return (trace?.runtimeCoordinatorEvents ?? []).filter((event) => event.eventType === "delivery_rejected").slice(-10).map((event) => {
|
|
13003
|
+
const routeEvidence = parseRuntimeCoordinatorEventPayload(event)?.deliveryRouteEvidence;
|
|
13004
|
+
const route = routeEvidence && typeof routeEvidence === "object" && !Array.isArray(routeEvidence) ? routeEvidence : null;
|
|
13005
|
+
const parsed = runtimeTransportAdmissionEvidenceSchema.safeParse(route?.admissionEvidence);
|
|
13006
|
+
return {
|
|
13007
|
+
observedAtMs: event.observedAtMs,
|
|
13008
|
+
rejectionReasonCode: event.reasonCode,
|
|
13009
|
+
acceptingDispatches: route?.acceptingDispatches ?? "unknown",
|
|
13010
|
+
admissionEvidence: parsed.success ? parsed.data : null,
|
|
13011
|
+
evidenceStatus: parsed.success ? "reported" : "not_reported"
|
|
13012
|
+
};
|
|
13013
|
+
});
|
|
13014
|
+
}
|
|
13039
13015
|
function readRuntimeCoordinatorPayloadString(payload, fieldName) {
|
|
13040
13016
|
const value = payload?.[fieldName];
|
|
13041
13017
|
return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
|
|
@@ -16263,7 +16239,7 @@ function isFlowResult(value) {
|
|
|
16263
16239
|
}
|
|
16264
16240
|
//#endregion
|
|
16265
16241
|
//#region src/commands/uninstall.ts
|
|
16266
|
-
const execFileAsync
|
|
16242
|
+
const execFileAsync = promisify(execFile);
|
|
16267
16243
|
const UNINSTALL_INTERNAL_SAFE_VALIDATION_FLAG = "--internal-safe-validation";
|
|
16268
16244
|
async function runUninstall(input) {
|
|
16269
16245
|
const runtime = await resolveRuntimeContext({ view: input.view });
|
|
@@ -16590,7 +16566,7 @@ function resolvedKeepAction() {
|
|
|
16590
16566
|
}
|
|
16591
16567
|
async function resolveProductionCliInstallSource() {
|
|
16592
16568
|
const npmCommand = process.platform === "win32" ? "npm.cmd" : "npm";
|
|
16593
|
-
const npmGlobalRootPath = await execFileAsync
|
|
16569
|
+
const npmGlobalRootPath = await execFileAsync(npmCommand, ["root", "-g"], { encoding: "utf8" }).then((result) => String(result.stdout ?? "").trim()).catch(() => "");
|
|
16594
16570
|
return inferProductionCliInstallSourceFromPaths({
|
|
16595
16571
|
cliScriptPath: process.argv[1],
|
|
16596
16572
|
npmGlobalRootPath
|
|
@@ -17611,11 +17587,12 @@ async function resolveManagedCliDelegation(input) {
|
|
|
17611
17587
|
env,
|
|
17612
17588
|
argv: input.argv
|
|
17613
17589
|
}) !== "prod" || normalizeOptionalText$2(env["OPENMELD_HOME"]) || env[MANAGED_CLI_DELEGATION_ENV] === "1" || isServiceCarrierCommand(firstCommand, secondCommand) || args.includes(UPGRADE_INTERNAL_ALIGN_SERVICE_FLAG)) return { status: "stay" };
|
|
17614
|
-
const managed = await
|
|
17590
|
+
const managed = await readManagedCliInstallation({
|
|
17615
17591
|
env,
|
|
17616
17592
|
argv: input.argv
|
|
17617
17593
|
});
|
|
17618
17594
|
if (!managed) return { status: "stay" };
|
|
17595
|
+
const managedPath = await realpath(managed.binaryPath);
|
|
17619
17596
|
let versionComparison;
|
|
17620
17597
|
try {
|
|
17621
17598
|
versionComparison = compareSemver(managed.version, input.currentVersion);
|
|
@@ -17624,13 +17601,13 @@ async function resolveManagedCliDelegation(input) {
|
|
|
17624
17601
|
}
|
|
17625
17602
|
if (versionComparison >= 0) return {
|
|
17626
17603
|
args,
|
|
17627
|
-
command:
|
|
17604
|
+
command: managedPath,
|
|
17628
17605
|
reason: "managed_cli_is_current",
|
|
17629
17606
|
status: "delegate"
|
|
17630
17607
|
};
|
|
17631
17608
|
if (firstCommand === "upgrade") return {
|
|
17632
17609
|
args,
|
|
17633
|
-
command:
|
|
17610
|
+
command: managedPath,
|
|
17634
17611
|
reason: "managed_cli_upgrade_owns_channel",
|
|
17635
17612
|
status: "delegate"
|
|
17636
17613
|
};
|
|
@@ -17655,18 +17632,6 @@ async function runManagedCliDelegation(delegation, env = process.env) {
|
|
|
17655
17632
|
});
|
|
17656
17633
|
});
|
|
17657
17634
|
}
|
|
17658
|
-
async function resolveUsableManagedCli(input) {
|
|
17659
|
-
const resolvedPath = await realpath(openMeldManagedBinaryPath(input)).catch(() => null);
|
|
17660
|
-
if (!resolvedPath) return null;
|
|
17661
|
-
if (!(await stat(resolvedPath).catch(() => null))?.isFile()) return null;
|
|
17662
|
-
if (!await access(resolvedPath, constants.X_OK).then(() => true, () => false)) return null;
|
|
17663
|
-
const version = basename(dirname(resolvedPath));
|
|
17664
|
-
if (!version) return null;
|
|
17665
|
-
return await realpath(openMeldManagedVersionBinaryPath(version, input)).catch(() => null) === resolvedPath ? {
|
|
17666
|
-
path: resolvedPath,
|
|
17667
|
-
version
|
|
17668
|
-
} : null;
|
|
17669
|
-
}
|
|
17670
17635
|
function isServiceCarrierCommand(firstCommand, secondCommand) {
|
|
17671
17636
|
return (firstCommand === "service" || firstCommand === "daemon") && secondCommand === "run";
|
|
17672
17637
|
}
|
|
@@ -23149,897 +23114,6 @@ async function runSpaceAccess(input) {
|
|
|
23149
23114
|
});
|
|
23150
23115
|
}
|
|
23151
23116
|
//#endregion
|
|
23152
|
-
//#region src/space/action-command.ts
|
|
23153
|
-
const FINAL_SAFE_STATUSES = /* @__PURE__ */ new Set([
|
|
23154
|
-
"blocked",
|
|
23155
|
-
"done",
|
|
23156
|
-
"handoff",
|
|
23157
|
-
"needs_input"
|
|
23158
|
-
]);
|
|
23159
|
-
const DISPATCH_ACTION_CLI_PLACEHOLDER = "<DISPATCH_ACTION_CLI>";
|
|
23160
|
-
const SPACE_ACTION_REPLY_TIMING_EVENT = "openmeld.space_action.reply_timing";
|
|
23161
|
-
function runSpaceActionReply(input) {
|
|
23162
|
-
const text = resolveReplyMessageText(input);
|
|
23163
|
-
const result = recordDispatchSpaceReply({
|
|
23164
|
-
filePaths: input.filePaths,
|
|
23165
|
-
messagePartCount: input.messageParts.length,
|
|
23166
|
-
mentionTargets: input.mentionTargets,
|
|
23167
|
-
referenceTargets: input.referenceTargets,
|
|
23168
|
-
text,
|
|
23169
|
-
wakeTargets: input.wakeTargets
|
|
23170
|
-
});
|
|
23171
|
-
if (result instanceof Promise) return result.then((record) => {
|
|
23172
|
-
emitActionRecorded(record);
|
|
23173
|
-
});
|
|
23174
|
-
emitActionRecorded(result);
|
|
23175
|
-
}
|
|
23176
|
-
function recordDispatchSpaceReply(input) {
|
|
23177
|
-
const timing = createSpaceActionReplyTiming();
|
|
23178
|
-
timing.emit("command_start", void 0, {
|
|
23179
|
-
messagePartCount: input.messagePartCount ?? 0,
|
|
23180
|
-
mentionTargetCount: input.mentionTargets?.length ?? 0,
|
|
23181
|
-
referenceTargetCount: input.referenceTargets?.length ?? 0,
|
|
23182
|
-
wakeTargetCount: input.wakeTargets?.length ?? 0
|
|
23183
|
-
});
|
|
23184
|
-
const filePaths = input.filePaths ?? [];
|
|
23185
|
-
if (filePaths.length && input.files?.length) throw new Error("Choose uploaded paths or saved file revisions for this reply.");
|
|
23186
|
-
const context = filePaths.length > 0 ? readDispatchSpaceActionContextFromEnv() : readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23187
|
-
timing.emit("context_ready", context);
|
|
23188
|
-
assertAllowedAction(context, "post_message");
|
|
23189
|
-
const text = normalizeRequiredText(input.text, "Reply message is required.");
|
|
23190
|
-
const targetIds = resolveMessageEnvelopeTargetIds({
|
|
23191
|
-
context,
|
|
23192
|
-
mentionTargets: input.mentionTargets ?? [],
|
|
23193
|
-
wakeTargets: input.wakeTargets ?? [],
|
|
23194
|
-
referenceTargets: input.referenceTargets ?? []
|
|
23195
|
-
});
|
|
23196
|
-
timing.emit("targets_resolved", context, {
|
|
23197
|
-
activationTargetCount: targetIds.activationTargets.length,
|
|
23198
|
-
messageLength: text.length,
|
|
23199
|
-
mentionTargetCount: targetIds.mentionTargets.length,
|
|
23200
|
-
referenceTargetCount: targetIds.referenceTargets.length
|
|
23201
|
-
});
|
|
23202
|
-
if (filePaths.length === 0) return writeSpaceActionReplyRecord({
|
|
23203
|
-
context,
|
|
23204
|
-
files: input.files ? [...input.files] : [],
|
|
23205
|
-
targetIds,
|
|
23206
|
-
text,
|
|
23207
|
-
timing
|
|
23208
|
-
});
|
|
23209
|
-
return uploadAndRecordSpaceActionReply({
|
|
23210
|
-
context,
|
|
23211
|
-
filePaths,
|
|
23212
|
-
targetIds,
|
|
23213
|
-
text,
|
|
23214
|
-
timing
|
|
23215
|
-
});
|
|
23216
|
-
}
|
|
23217
|
-
function resolveReplyMessageText(input) {
|
|
23218
|
-
const hasInlineMessage = input.messageParts.length > 0;
|
|
23219
|
-
const messageFilePath = input.messageFilePath?.trim();
|
|
23220
|
-
if (hasInlineMessage && messageFilePath) throw new Error("Choose either a reply message or --message-file, not both.");
|
|
23221
|
-
if (!messageFilePath) return normalizeRequiredJoinedText(input.messageParts, "Reply message is required.");
|
|
23222
|
-
return normalizeRequiredText(readFileSync(messageFilePath === "-" ? 0 : messageFilePath, { encoding: "utf8" }), "Reply message is required.");
|
|
23223
|
-
}
|
|
23224
|
-
async function uploadAndRecordSpaceActionReply(input) {
|
|
23225
|
-
const files = await uploadSpaceActionReplyFiles({
|
|
23226
|
-
context: input.context,
|
|
23227
|
-
filePaths: input.filePaths
|
|
23228
|
-
});
|
|
23229
|
-
return writeSpaceActionReplyRecord({
|
|
23230
|
-
...input,
|
|
23231
|
-
files
|
|
23232
|
-
});
|
|
23233
|
-
}
|
|
23234
|
-
function writeSpaceActionReplyRecord(input) {
|
|
23235
|
-
const record = recordAction({
|
|
23236
|
-
action: {
|
|
23237
|
-
type: "post_message",
|
|
23238
|
-
...input.files.length > 0 ? { files: [...input.files] } : {},
|
|
23239
|
-
messageEnvelope: {
|
|
23240
|
-
activationTargets: input.targetIds.activationTargets,
|
|
23241
|
-
mentionTargets: input.targetIds.mentionTargets,
|
|
23242
|
-
referenceTargets: input.targetIds.referenceTargets,
|
|
23243
|
-
...input.context.replyToSignalId ? { replyToSignalId: input.context.replyToSignalId } : {},
|
|
23244
|
-
text: input.text
|
|
23245
|
-
}
|
|
23246
|
-
},
|
|
23247
|
-
command: "reply",
|
|
23248
|
-
context: input.context
|
|
23249
|
-
});
|
|
23250
|
-
input.timing.emit("record_written", input.context, { actionType: record.action.type });
|
|
23251
|
-
input.timing.emit("done", input.context, { actionType: record.action.type });
|
|
23252
|
-
return record;
|
|
23253
|
-
}
|
|
23254
|
-
async function uploadSpaceActionReplyFiles(input) {
|
|
23255
|
-
const prepared = await prepareRequestedSpaceSendFiles({ filePaths: input.filePaths });
|
|
23256
|
-
if (prepared.length === 0) return [];
|
|
23257
|
-
return await uploadPreparedSpaceFiles({
|
|
23258
|
-
files: prepared,
|
|
23259
|
-
requestContext: buildOpenMeldRequestContextFromProfile({ openMeldProfile: await requireOpenMeldProfile({
|
|
23260
|
-
openMeldProfileId: input.context.targetProfileId,
|
|
23261
|
-
persistSelection: false,
|
|
23262
|
-
authAction: "sharing files in a Space reply"
|
|
23263
|
-
}) }),
|
|
23264
|
-
spaceApi: createCliSpaceApi(await resolveBaseUrl()),
|
|
23265
|
-
spaceId: input.context.spaceId
|
|
23266
|
-
});
|
|
23267
|
-
}
|
|
23268
|
-
function runSpaceActionWake(input) {
|
|
23269
|
-
const context = readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23270
|
-
assertAllowedAction(context, "post_message");
|
|
23271
|
-
const text = normalizeRequiredJoinedText(input.messageParts, "Wake handoff message is required.");
|
|
23272
|
-
recordAction({
|
|
23273
|
-
action: {
|
|
23274
|
-
type: "post_message",
|
|
23275
|
-
messageEnvelope: {
|
|
23276
|
-
activationTargets: resolveTargetProfileIds({
|
|
23277
|
-
context,
|
|
23278
|
-
relation: "wake",
|
|
23279
|
-
targets: [input.target]
|
|
23280
|
-
}),
|
|
23281
|
-
mentionTargets: [],
|
|
23282
|
-
referenceTargets: [],
|
|
23283
|
-
...context.replyToSignalId ? { replyToSignalId: context.replyToSignalId } : {},
|
|
23284
|
-
text
|
|
23285
|
-
}
|
|
23286
|
-
},
|
|
23287
|
-
command: "wake",
|
|
23288
|
-
context
|
|
23289
|
-
});
|
|
23290
|
-
}
|
|
23291
|
-
function runSpaceActionStatus(input) {
|
|
23292
|
-
emitActionRecorded(recordDispatchSpaceStatus({
|
|
23293
|
-
status: input.status,
|
|
23294
|
-
text: normalizeRequiredJoinedText(input.textParts, "Status text is required.")
|
|
23295
|
-
}));
|
|
23296
|
-
}
|
|
23297
|
-
function recordDispatchSpaceStatus(input) {
|
|
23298
|
-
const context = readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23299
|
-
assertAllowedAction(context, "post_status");
|
|
23300
|
-
return recordAction({
|
|
23301
|
-
action: {
|
|
23302
|
-
type: "post_status",
|
|
23303
|
-
status: normalizeStatus(input.status),
|
|
23304
|
-
text: normalizeRequiredText(input.text, "Status text is required.")
|
|
23305
|
-
},
|
|
23306
|
-
command: "status",
|
|
23307
|
-
context
|
|
23308
|
-
});
|
|
23309
|
-
}
|
|
23310
|
-
function runSpaceActionSilent(input) {
|
|
23311
|
-
emitActionRecorded(recordDispatchSpaceSilent(input));
|
|
23312
|
-
}
|
|
23313
|
-
function recordDispatchSpaceSilent(input) {
|
|
23314
|
-
const context = readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23315
|
-
assertAllowedAction(context, "stay_silent");
|
|
23316
|
-
return recordAction({
|
|
23317
|
-
action: {
|
|
23318
|
-
type: "stay_silent",
|
|
23319
|
-
reason: normalizeRequiredText(input.reason, "A silent action requires --reason.")
|
|
23320
|
-
},
|
|
23321
|
-
command: "silent",
|
|
23322
|
-
context
|
|
23323
|
-
});
|
|
23324
|
-
}
|
|
23325
|
-
function runSpaceActionTargets() {
|
|
23326
|
-
const targetReference = requireLoadedTargets(readDispatchSpaceActionContextFromEnv().sendTargetReference);
|
|
23327
|
-
const wakeTargets = targetReference.projection.filter((target) => target.allowedRelations.wake);
|
|
23328
|
-
const referenceTargets = targetReference.projection.filter((target) => target.allowedRelations.reference);
|
|
23329
|
-
const mentionTargets = targetReference.projection.filter((target) => target.allowedRelations.mention);
|
|
23330
|
-
outLine("Wake targets:");
|
|
23331
|
-
if (wakeTargets.length === 0) outLine("- none");
|
|
23332
|
-
else for (const target of wakeTargets) outLine(`- ${formatTargetLine(target, "wake")}`);
|
|
23333
|
-
outLine("");
|
|
23334
|
-
outLine("Mention targets:");
|
|
23335
|
-
if (mentionTargets.length === 0) outLine("- none");
|
|
23336
|
-
else for (const target of mentionTargets) outLine(`- ${formatTargetLine(target, "mention")}`);
|
|
23337
|
-
outLine("");
|
|
23338
|
-
outLine("Reference targets:");
|
|
23339
|
-
if (referenceTargets.length === 0) outLine("- none");
|
|
23340
|
-
else for (const target of referenceTargets) outLine(`- ${formatTargetLine(target, "reference")}`);
|
|
23341
|
-
}
|
|
23342
|
-
function runSpaceActionHelp() {
|
|
23343
|
-
let context = null;
|
|
23344
|
-
try {
|
|
23345
|
-
context = readDispatchSpaceActionContextFromEnv();
|
|
23346
|
-
} catch {
|
|
23347
|
-
context = null;
|
|
23348
|
-
}
|
|
23349
|
-
outLine("OpenMeld Space Action commands:");
|
|
23350
|
-
outLine(formatSpaceActionHelpExample("Reply", "reply \"message\"", context));
|
|
23351
|
-
outLine(formatSpaceActionHelpExample("Handoff and wake another agent", "wake <agent-profile-id> \"summary and request\"", context));
|
|
23352
|
-
outLine(formatSpaceActionHelpExample("Reply and also wake another agent", "reply --wake <agent-profile-id> \"message\"", context));
|
|
23353
|
-
outLine(formatSpaceActionHelpExample("Reply and reference another agent", "reply --reference <agent-profile-id> \"message\"", context));
|
|
23354
|
-
outLine(formatSpaceActionHelpExample("Reply and mention a person", "reply --mention <human-profile-id> \"message\"", context));
|
|
23355
|
-
outLine(formatSpaceActionHelpExample("Final status", "status done \"short completion update\"", context));
|
|
23356
|
-
outLine(formatSpaceActionHelpExample("Stay silent", "silent --reason \"No public reply is needed.\"", context));
|
|
23357
|
-
outLine(formatSpaceActionHelpExample("Current targets", "targets", context));
|
|
23358
|
-
outLine(formatSpaceActionHelpExample("Help", "help", context));
|
|
23359
|
-
outLine("");
|
|
23360
|
-
outLine("Run exactly one final action for the current Wake. OpenMeld posts the accepted action to the Space.");
|
|
23361
|
-
if (!context) {
|
|
23362
|
-
outLine("");
|
|
23363
|
-
outLine(`No active dispatch context was found. ${DISPATCH_ACTION_CLI_PLACEHOLDER} is a placeholder for the exact Space Action command prefix printed in an OpenMeld Space Wake dispatch prompt.`);
|
|
23364
|
-
outLine("Write actions and targets require an active OpenMeld Space Wake dispatch. Do not guess the command prefix or rewrite it to npx.");
|
|
23365
|
-
return;
|
|
23366
|
-
}
|
|
23367
|
-
outLine("");
|
|
23368
|
-
outLine(`Active dispatch: ${context.dispatchId}`);
|
|
23369
|
-
outLine(`Current target profile: ${context.targetProfileId}`);
|
|
23370
|
-
}
|
|
23371
|
-
function formatSpaceActionHelpExample(label, action, context) {
|
|
23372
|
-
return `- ${label}: ${formatSpaceActionHelpCommand(action, context)}`;
|
|
23373
|
-
}
|
|
23374
|
-
function formatSpaceActionHelpCommand(action, context) {
|
|
23375
|
-
if (!context) return `${DISPATCH_ACTION_CLI_PLACEHOLDER} space action ${action}`;
|
|
23376
|
-
return formatOpenMeldCliCommand(`openmeld space action ${action}`);
|
|
23377
|
-
}
|
|
23378
|
-
function recordAction(input) {
|
|
23379
|
-
return writeDispatchSpaceActionRecord(input);
|
|
23380
|
-
}
|
|
23381
|
-
function emitActionRecorded(record) {
|
|
23382
|
-
outLine(`Action recorded: OpenMeld saved this unpublished Space action proposal (${record.action.type}) for the current Wake.`);
|
|
23383
|
-
}
|
|
23384
|
-
function createSpaceActionReplyTiming() {
|
|
23385
|
-
const startedAt = performance.now();
|
|
23386
|
-
let previousAt = startedAt;
|
|
23387
|
-
const commandStartProcessUptimeMs = Math.round(startedAt);
|
|
23388
|
-
return { emit: (phase, context, fields = {}) => {
|
|
23389
|
-
const now = performance.now();
|
|
23390
|
-
const elapsedMs = Math.max(0, Math.round(now - startedAt));
|
|
23391
|
-
const durationMs = Math.max(0, Math.round(now - previousAt));
|
|
23392
|
-
previousAt = now;
|
|
23393
|
-
process.stderr.write(`[${SPACE_ACTION_REPLY_TIMING_EVENT}] ${JSON.stringify({
|
|
23394
|
-
event: SPACE_ACTION_REPLY_TIMING_EVENT,
|
|
23395
|
-
phase,
|
|
23396
|
-
elapsedMs,
|
|
23397
|
-
durationMs,
|
|
23398
|
-
commandStartProcessUptimeMs,
|
|
23399
|
-
attemptId: context?.attemptId ?? null,
|
|
23400
|
-
dispatchId: context?.dispatchId ?? null,
|
|
23401
|
-
spaceId: context?.spaceId ?? null,
|
|
23402
|
-
targetProfileId: context?.targetProfileId ?? null,
|
|
23403
|
-
taskId: context?.taskId ?? null,
|
|
23404
|
-
...fields
|
|
23405
|
-
})}\n`);
|
|
23406
|
-
} };
|
|
23407
|
-
}
|
|
23408
|
-
function resolveMessageEnvelopeTargetIds(input) {
|
|
23409
|
-
const targets = {
|
|
23410
|
-
activationTargets: resolveTargetProfileIds({
|
|
23411
|
-
context: input.context,
|
|
23412
|
-
relation: "wake",
|
|
23413
|
-
targets: input.wakeTargets
|
|
23414
|
-
}),
|
|
23415
|
-
mentionTargets: resolveTargetProfileIds({
|
|
23416
|
-
context: input.context,
|
|
23417
|
-
relation: "mention",
|
|
23418
|
-
targets: input.mentionTargets
|
|
23419
|
-
}),
|
|
23420
|
-
referenceTargets: resolveTargetProfileIds({
|
|
23421
|
-
context: input.context,
|
|
23422
|
-
relation: "reference",
|
|
23423
|
-
targets: input.referenceTargets
|
|
23424
|
-
})
|
|
23425
|
-
};
|
|
23426
|
-
assertDistinctMessageEnvelopeTargets(targets);
|
|
23427
|
-
return targets;
|
|
23428
|
-
}
|
|
23429
|
-
function assertDistinctMessageEnvelopeTargets(input) {
|
|
23430
|
-
const seen = /* @__PURE__ */ new Map();
|
|
23431
|
-
const relationTargets = [
|
|
23432
|
-
["wake", input.activationTargets],
|
|
23433
|
-
["reference", input.referenceTargets],
|
|
23434
|
-
["mention", input.mentionTargets]
|
|
23435
|
-
];
|
|
23436
|
-
for (const [relation, profileIds] of relationTargets) for (const profileId of profileIds) {
|
|
23437
|
-
const existingRelation = seen.get(profileId);
|
|
23438
|
-
if (!existingRelation) {
|
|
23439
|
-
seen.set(profileId, relation);
|
|
23440
|
-
continue;
|
|
23441
|
-
}
|
|
23442
|
-
if (existingRelation === relation) throw new Error(`The same target (${profileId}) was listed more than once as ${formatRelation(relation)}. Choose it once, or send separate messages.`);
|
|
23443
|
-
throw new Error(`The same target (${profileId}) cannot be both ${formatRelation(existingRelation)} and ${formatRelation(relation)} in one Space Action. Choose one relationship, or send separate messages.`);
|
|
23444
|
-
}
|
|
23445
|
-
}
|
|
23446
|
-
function assertAllowedAction(context, actionType) {
|
|
23447
|
-
const allowedActions = context.spaceContractSnapshot?.allowedActions ?? null;
|
|
23448
|
-
if (allowedActions && !allowedActions.includes(actionType)) throw new Error(`This Space does not allow ${actionType}.`);
|
|
23449
|
-
}
|
|
23450
|
-
function normalizeStatus(value) {
|
|
23451
|
-
const normalized = value.trim().toLowerCase();
|
|
23452
|
-
if (normalized === "working") throw new Error("`working` would close the current Wake. Non-final progress updates are not supported by OpenMeld Space Action yet.");
|
|
23453
|
-
if (normalized === "blocked" || normalized === "done" || normalized === "handoff" || normalized === "needs_input") return normalized;
|
|
23454
|
-
if (!FINAL_SAFE_STATUSES.has(normalized)) throw new Error("Status must be one of: done, blocked, needs_input, handoff.");
|
|
23455
|
-
return normalized;
|
|
23456
|
-
}
|
|
23457
|
-
function resolveTargetProfileIds(input) {
|
|
23458
|
-
return [...new Set(input.targets)].map((target) => resolveTargetProfileId({
|
|
23459
|
-
context: input.context,
|
|
23460
|
-
relation: input.relation,
|
|
23461
|
-
target
|
|
23462
|
-
}));
|
|
23463
|
-
}
|
|
23464
|
-
function resolveTargetProfileId(input) {
|
|
23465
|
-
const targetReference = requireLoadedTargets(input.context.sendTargetReference);
|
|
23466
|
-
const query = normalizeRequiredText(input.target, "Target is required.");
|
|
23467
|
-
const selected = targetReference.projection.find((target) => target.profileId === query);
|
|
23468
|
-
if (!selected) throw new Error(`No current Space target has Profile ID "${query}". Run openmeld space action targets and use the full Profile ID.`);
|
|
23469
|
-
if (!selected.allowedRelations[input.relation]) throw new Error(`${formatRelation(input.relation)} is not allowed for ${selected.primaryMentionLabel}.`);
|
|
23470
|
-
return selected.profileId;
|
|
23471
|
-
}
|
|
23472
|
-
function requireLoadedTargets(targetReference) {
|
|
23473
|
-
if (targetReference.status === "loaded") return targetReference;
|
|
23474
|
-
throw new Error(`Current Space targets are not available for this dispatch: ${targetReference.errorMessage}`);
|
|
23475
|
-
}
|
|
23476
|
-
function formatTargetLine(target, relation) {
|
|
23477
|
-
const relationLabel = formatRelation(relation);
|
|
23478
|
-
return `${target.primaryMentionLabel} · ${target.profileKind} · ${relationLabel} · ${target.profileId}`;
|
|
23479
|
-
}
|
|
23480
|
-
function formatRelation(relation) {
|
|
23481
|
-
switch (relation) {
|
|
23482
|
-
case "wake": return "Wake";
|
|
23483
|
-
case "reference": return "Reference";
|
|
23484
|
-
default: return relation;
|
|
23485
|
-
}
|
|
23486
|
-
}
|
|
23487
|
-
function normalizeRequiredJoinedText(parts, errorMessage) {
|
|
23488
|
-
return normalizeRequiredText(parts.join(" "), errorMessage);
|
|
23489
|
-
}
|
|
23490
|
-
function normalizeRequiredText(value, errorMessage) {
|
|
23491
|
-
const normalized = String(value ?? "").trim();
|
|
23492
|
-
if (normalized.length === 0) throw new Error(errorMessage);
|
|
23493
|
-
return normalized;
|
|
23494
|
-
}
|
|
23495
|
-
//#endregion
|
|
23496
|
-
//#region src/space/dispatch-file-read.ts
|
|
23497
|
-
const execFileAsync = promisify(execFile);
|
|
23498
|
-
/** Keep file access outside the controller sandbox, under the existing CLI auth contract. */
|
|
23499
|
-
async function readDispatchSpaceFile(input) {
|
|
23500
|
-
if (process.env["OPENMELD_DISPATCH_RUNTIME_MODE"] !== "dispatch-owned-runtime") throw new Error("Space file tools require an active OpenMeld dispatch runtime.");
|
|
23501
|
-
const context = readDispatchSpaceActionContextFromEnv();
|
|
23502
|
-
const command = resolveDispatchSpaceActionMcpServer(process.env);
|
|
23503
|
-
if (!command) throw new Error("No active OpenMeld dispatch file reader was found.");
|
|
23504
|
-
const fileId = spaceFileEntryIdSchema.parse(input.fileId);
|
|
23505
|
-
const revision = spaceFileRevisionNumberSchema.optional().parse(input.revision);
|
|
23506
|
-
const args = [
|
|
23507
|
-
"space",
|
|
23508
|
-
"files",
|
|
23509
|
-
"read",
|
|
23510
|
-
"--profile",
|
|
23511
|
-
context.targetProfileId,
|
|
23512
|
-
"--json",
|
|
23513
|
-
"--view",
|
|
23514
|
-
"agent",
|
|
23515
|
-
...revision === void 0 ? [] : ["--revision", String(revision)],
|
|
23516
|
-
"--",
|
|
23517
|
-
context.spaceId,
|
|
23518
|
-
fileId
|
|
23519
|
-
];
|
|
23520
|
-
const { stdout } = await execFileAsync(command.commandPath, args, {
|
|
23521
|
-
encoding: "utf8",
|
|
23522
|
-
maxBuffer: 8 * 1024 * 1024,
|
|
23523
|
-
timeout: 3e4
|
|
23524
|
-
}).catch((error) => {
|
|
23525
|
-
if (error && typeof error === "object" && "stdout" in error && typeof error.stdout === "string") {
|
|
23526
|
-
let value;
|
|
23527
|
-
try {
|
|
23528
|
-
value = JSON.parse(error.stdout);
|
|
23529
|
-
} catch {}
|
|
23530
|
-
const parsed = cliJsonErrorEnvelopeSchema.safeParse(value);
|
|
23531
|
-
if (parsed.success) throw new Error(JSON.stringify(parsed.data), { cause: error });
|
|
23532
|
-
}
|
|
23533
|
-
throw error;
|
|
23534
|
-
});
|
|
23535
|
-
const result = readSpaceFileTextResponseSchema.parse(JSON.parse(stdout));
|
|
23536
|
-
if (result.file.spaceId !== context.spaceId || result.file.id !== fileId || revision !== void 0 && result.revision !== revision) throw new Error("The Space file response does not match the requested file revision.");
|
|
23537
|
-
return result;
|
|
23538
|
-
}
|
|
23539
|
-
//#endregion
|
|
23540
|
-
//#region src/space/dispatch-history-read.ts
|
|
23541
|
-
/** Read the current Wake's bounded Space history through the existing member API. */
|
|
23542
|
-
async function readDispatchSpaceHistory() {
|
|
23543
|
-
if (process.env["OPENMELD_DISPATCH_RUNTIME_MODE"] !== "dispatch-owned-runtime") throw new Error("Space history tools require an active OpenMeld dispatch runtime.");
|
|
23544
|
-
const context = readDispatchSpaceActionContextFromEnv();
|
|
23545
|
-
const profile = await requireOpenMeldProfile({
|
|
23546
|
-
openMeldProfileId: context.targetProfileId,
|
|
23547
|
-
persistSelection: false,
|
|
23548
|
-
authAction: "reading the current Wake's Space history"
|
|
23549
|
-
});
|
|
23550
|
-
if (profile.openMeldProfileId !== context.targetProfileId || profile.profileKind !== "agent") throw new Error("The Space history reader does not match the current Agent.");
|
|
23551
|
-
const result = await createCliSpaceApi(await resolveBaseUrl()).listSignals({
|
|
23552
|
-
spaceId: context.spaceId,
|
|
23553
|
-
requestContext: buildOpenMeldRequestContextFromProfile({ openMeldProfile: profile }),
|
|
23554
|
-
query: {
|
|
23555
|
-
aroundSignalId: context.sourceEventId,
|
|
23556
|
-
beforeCount: 20,
|
|
23557
|
-
afterCount: 0,
|
|
23558
|
-
kinds: ["text"]
|
|
23559
|
-
}
|
|
23560
|
-
});
|
|
23561
|
-
const current = readDispatchSpaceActionContextFromEnv();
|
|
23562
|
-
if (current.contextId !== context.contextId || current.nonce !== context.nonce || current.spaceId !== context.spaceId || current.sourceEventId !== context.sourceEventId || current.targetProfileId !== context.targetProfileId) throw new Error("The dispatch context changed during the Space history read.");
|
|
23563
|
-
const output = dispatchSpaceHistoryResultSchema.parse({
|
|
23564
|
-
spaceId: context.spaceId,
|
|
23565
|
-
sourceSignalId: context.sourceEventId,
|
|
23566
|
-
beforeCount: 20,
|
|
23567
|
-
afterCount: 0,
|
|
23568
|
-
signals: result.signals,
|
|
23569
|
-
nextCursor: result.nextCursor
|
|
23570
|
-
});
|
|
23571
|
-
const signals = output.signals.map((signal) => signalTextEnvelopeSchema.parse(signal));
|
|
23572
|
-
if (signals.some((signal) => signal.spaceId !== context.spaceId)) throw new Error("The Space history response does not match the current Space.");
|
|
23573
|
-
return {
|
|
23574
|
-
...output,
|
|
23575
|
-
signals
|
|
23576
|
-
};
|
|
23577
|
-
}
|
|
23578
|
-
//#endregion
|
|
23579
|
-
//#region src/space/dispatch-task.ts
|
|
23580
|
-
async function listDispatchSpaceTasks(phase) {
|
|
23581
|
-
return await withDispatchTaskContext(async ({ actionContext, api, requestContext }) => await api.listTasks({
|
|
23582
|
-
spaceId: actionContext.spaceId,
|
|
23583
|
-
requestContext,
|
|
23584
|
-
...phase ? { phase } : {}
|
|
23585
|
-
}));
|
|
23586
|
-
}
|
|
23587
|
-
async function createDispatchSpaceTask(body) {
|
|
23588
|
-
return await withDispatchTaskContext(async ({ actionContext, api, requestContext }) => await api.createTask({
|
|
23589
|
-
spaceId: actionContext.spaceId,
|
|
23590
|
-
requestContext,
|
|
23591
|
-
body: createSpaceTaskBodySchema.parse({
|
|
23592
|
-
...body,
|
|
23593
|
-
operationId: crypto.randomUUID(),
|
|
23594
|
-
sourceSignalId: actionContext.sourceEventId,
|
|
23595
|
-
assigneeProfileId: body.assigneeProfileId === void 0 ? actionContext.targetProfileId : body.assigneeProfileId
|
|
23596
|
-
})
|
|
23597
|
-
}));
|
|
23598
|
-
}
|
|
23599
|
-
async function mutateDispatchSpaceTask(input) {
|
|
23600
|
-
const taskId = spaceTaskIdSchema.parse(input.taskId);
|
|
23601
|
-
const body = mutateSpaceTaskBodySchema.parse({
|
|
23602
|
-
...input.body,
|
|
23603
|
-
operationId: crypto.randomUUID()
|
|
23604
|
-
});
|
|
23605
|
-
return await withDispatchTaskContext(async ({ actionContext, api, requestContext }) => await api.mutateTask({
|
|
23606
|
-
spaceId: actionContext.spaceId,
|
|
23607
|
-
requestContext,
|
|
23608
|
-
taskId,
|
|
23609
|
-
body
|
|
23610
|
-
}));
|
|
23611
|
-
}
|
|
23612
|
-
async function withDispatchTaskContext(operation) {
|
|
23613
|
-
if (process.env["OPENMELD_DISPATCH_RUNTIME_MODE"] !== "dispatch-owned-runtime") throw new Error("Space Task tools require an active OpenMeld dispatch runtime.");
|
|
23614
|
-
const actionContext = readDispatchSpaceActionContextFromEnv();
|
|
23615
|
-
const profile = await requireOpenMeldProfile({
|
|
23616
|
-
openMeldProfileId: actionContext.targetProfileId,
|
|
23617
|
-
persistSelection: false,
|
|
23618
|
-
authAction: "working with Tasks in the current OpenMeld Space"
|
|
23619
|
-
});
|
|
23620
|
-
if (profile.openMeldProfileId !== actionContext.targetProfileId || profile.profileKind !== "agent") throw new Error("The Space Task actor does not match the current Agent.");
|
|
23621
|
-
const result = await operation({
|
|
23622
|
-
actionContext,
|
|
23623
|
-
api: createCliSpaceApi(await resolveBaseUrl()),
|
|
23624
|
-
requestContext: buildOpenMeldRequestContextFromProfile({ openMeldProfile: profile })
|
|
23625
|
-
});
|
|
23626
|
-
const current = readDispatchSpaceActionContextFromEnv();
|
|
23627
|
-
if (current.contextId !== actionContext.contextId || current.nonce !== actionContext.nonce || current.spaceId !== actionContext.spaceId || current.sourceEventId !== actionContext.sourceEventId || current.targetProfileId !== actionContext.targetProfileId) throw new Error("The dispatch context changed during the Space Task action.");
|
|
23628
|
-
return result;
|
|
23629
|
-
}
|
|
23630
|
-
//#endregion
|
|
23631
|
-
//#region src/space/dispatch-working-copy.ts
|
|
23632
|
-
const run = promisify(execFile);
|
|
23633
|
-
async function runDispatchWorkingCopy(action, resolution) {
|
|
23634
|
-
const context = readDispatchSpaceActionContextFromEnv();
|
|
23635
|
-
const command = resolveDispatchSpaceActionMcpServer(process.env);
|
|
23636
|
-
if (!(command && context.workingCopyId)) throw new Error("This Wake has no prepared working copy.");
|
|
23637
|
-
const { stdout } = await run(command.commandPath, [
|
|
23638
|
-
"space",
|
|
23639
|
-
"files",
|
|
23640
|
-
"working-copy",
|
|
23641
|
-
action,
|
|
23642
|
-
"--profile",
|
|
23643
|
-
context.targetProfileId,
|
|
23644
|
-
"--json",
|
|
23645
|
-
"--view",
|
|
23646
|
-
"agent",
|
|
23647
|
-
...action === "resolve" ? [
|
|
23648
|
-
"--file-id",
|
|
23649
|
-
resolution?.fileId ?? "",
|
|
23650
|
-
"--revision",
|
|
23651
|
-
String(resolution?.revision ?? 0)
|
|
23652
|
-
] : [],
|
|
23653
|
-
"--",
|
|
23654
|
-
context.spaceId,
|
|
23655
|
-
context.workingCopyId
|
|
23656
|
-
], {
|
|
23657
|
-
encoding: "utf8",
|
|
23658
|
-
maxBuffer: 1024 * 1024,
|
|
23659
|
-
timeout: 12e4
|
|
23660
|
-
}).catch((error) => {
|
|
23661
|
-
if (error && typeof error === "object" && "stdout" in error && typeof error.stdout === "string") {
|
|
23662
|
-
let value;
|
|
23663
|
-
try {
|
|
23664
|
-
value = JSON.parse(error.stdout);
|
|
23665
|
-
} catch {}
|
|
23666
|
-
const parsed = cliJsonErrorEnvelopeSchema.safeParse(value);
|
|
23667
|
-
if (parsed.success) throw new Error(JSON.stringify(parsed.data), { cause: error });
|
|
23668
|
-
}
|
|
23669
|
-
throw error;
|
|
23670
|
-
});
|
|
23671
|
-
return spaceWorkingCopyResultSchema.parse(JSON.parse(stdout));
|
|
23672
|
-
}
|
|
23673
|
-
//#endregion
|
|
23674
|
-
//#region src/space/action-mcp-server.ts
|
|
23675
|
-
const FINAL_STATUS_SCHEMA = z.enum([
|
|
23676
|
-
"done",
|
|
23677
|
-
"blocked",
|
|
23678
|
-
"needs_input",
|
|
23679
|
-
"handoff"
|
|
23680
|
-
]);
|
|
23681
|
-
function createSpaceActionMcpServer() {
|
|
23682
|
-
const server = new McpServer({
|
|
23683
|
-
name: "openmeld-dispatch-space-action",
|
|
23684
|
-
version: "1.0.0"
|
|
23685
|
-
}, { instructions: "Use read_history for the bounded text history around the current Wake, and read_file for shared text files in the current Space. Use Space Task tools only when a clear deliverable needs durable ownership, progress, review, or later closure; questions and tiny same-turn actions stay in Messages. Task operations are non-final. Then choose exactly one final OpenMeld Space Action: reply for the exact public message, status for a final visible status, or stay_silent when no public message is needed. Private assistant output is not posted to the Space." });
|
|
23686
|
-
server.registerTool("working_copy", {
|
|
23687
|
-
title: "Save or inspect this handoff's files",
|
|
23688
|
-
description: "Inspect or commit this handoff's files; reconcile retries an unknown save. On conflict, refresh downloads the shared version, then status shows its path and revision. Merge it into the original working file, then resolve with fileId and incoming revision before committing again. No automatic merge or overwrite. Does not deliver or close the Wake. No Space, profile or path overrides.",
|
|
23689
|
-
inputSchema: {
|
|
23690
|
-
action: z.enum([
|
|
23691
|
-
"status",
|
|
23692
|
-
"commit",
|
|
23693
|
-
"reconcile",
|
|
23694
|
-
"refresh",
|
|
23695
|
-
"resolve"
|
|
23696
|
-
]),
|
|
23697
|
-
fileId: z.string().optional(),
|
|
23698
|
-
revision: z.number().int().positive().optional()
|
|
23699
|
-
}
|
|
23700
|
-
}, async ({ action, fileId, revision }) => {
|
|
23701
|
-
try {
|
|
23702
|
-
return { content: [{
|
|
23703
|
-
type: "text",
|
|
23704
|
-
text: JSON.stringify(await runDispatchWorkingCopy(action, {
|
|
23705
|
-
fileId,
|
|
23706
|
-
revision
|
|
23707
|
-
}))
|
|
23708
|
-
}] };
|
|
23709
|
-
} catch (error) {
|
|
23710
|
-
return {
|
|
23711
|
-
isError: true,
|
|
23712
|
-
content: [{
|
|
23713
|
-
type: "text",
|
|
23714
|
-
text: error instanceof Error ? error.message : String(error)
|
|
23715
|
-
}]
|
|
23716
|
-
};
|
|
23717
|
-
}
|
|
23718
|
-
});
|
|
23719
|
-
server.registerTool("read_history", {
|
|
23720
|
-
title: "Read the current Wake's Space history",
|
|
23721
|
-
description: "Read up to 20 text messages before the current Wake, plus its source message. Space, Agent identity and source are fixed by the active dispatch. Use this instead of terminal CLI history. This read does not submit a reply or close the Wake.",
|
|
23722
|
-
inputSchema: dispatchSpaceHistoryRequestSchema,
|
|
23723
|
-
outputSchema: dispatchSpaceHistoryResultSchema,
|
|
23724
|
-
annotations: {
|
|
23725
|
-
readOnlyHint: true,
|
|
23726
|
-
destructiveHint: false,
|
|
23727
|
-
idempotentHint: true,
|
|
23728
|
-
openWorldHint: false
|
|
23729
|
-
}
|
|
23730
|
-
}, async () => {
|
|
23731
|
-
try {
|
|
23732
|
-
const result = await readDispatchSpaceHistory();
|
|
23733
|
-
return {
|
|
23734
|
-
structuredContent: result,
|
|
23735
|
-
content: [{
|
|
23736
|
-
type: "text",
|
|
23737
|
-
text: JSON.stringify(result)
|
|
23738
|
-
}]
|
|
23739
|
-
};
|
|
23740
|
-
} catch (error) {
|
|
23741
|
-
return {
|
|
23742
|
-
isError: true,
|
|
23743
|
-
content: [{
|
|
23744
|
-
type: "text",
|
|
23745
|
-
text: error instanceof Error ? error.message : String(error)
|
|
23746
|
-
}]
|
|
23747
|
-
};
|
|
23748
|
-
}
|
|
23749
|
-
});
|
|
23750
|
-
server.registerTool("read_file", {
|
|
23751
|
-
title: "Read a file in the current OpenMeld Space",
|
|
23752
|
-
description: "Read a shared text file as the Agent in the current Wake. Use this for attached CSV, text, Markdown, or JSON files instead of running the CLI in a terminal. Pass the attachment's file ID and revision. This is a context read; it does not submit a reply or close the Wake.",
|
|
23753
|
-
inputSchema: {
|
|
23754
|
-
fileId: spaceFileEntryIdSchema,
|
|
23755
|
-
revision: spaceFileRevisionNumberSchema.optional()
|
|
23756
|
-
},
|
|
23757
|
-
annotations: {
|
|
23758
|
-
readOnlyHint: true,
|
|
23759
|
-
destructiveHint: false,
|
|
23760
|
-
idempotentHint: true,
|
|
23761
|
-
openWorldHint: false
|
|
23762
|
-
}
|
|
23763
|
-
}, async (input) => {
|
|
23764
|
-
try {
|
|
23765
|
-
const result = await readDispatchSpaceFile(input);
|
|
23766
|
-
return { content: [{
|
|
23767
|
-
type: "text",
|
|
23768
|
-
text: JSON.stringify(result)
|
|
23769
|
-
}] };
|
|
23770
|
-
} catch (error) {
|
|
23771
|
-
return {
|
|
23772
|
-
content: [{
|
|
23773
|
-
type: "text",
|
|
23774
|
-
text: error instanceof Error ? error.message : String(error)
|
|
23775
|
-
}],
|
|
23776
|
-
isError: true
|
|
23777
|
-
};
|
|
23778
|
-
}
|
|
23779
|
-
});
|
|
23780
|
-
server.registerTool("list_tasks", {
|
|
23781
|
-
title: "List Tasks in the current OpenMeld Space",
|
|
23782
|
-
description: "Read durable collaboration Tasks for this Space. Use the returned revision before changing a Task. Task phase is collaboration state, not Agent execution truth.",
|
|
23783
|
-
inputSchema: { phase: z.enum([
|
|
23784
|
-
"to_do",
|
|
23785
|
-
"in_progress",
|
|
23786
|
-
"in_review",
|
|
23787
|
-
"done",
|
|
23788
|
-
"canceled"
|
|
23789
|
-
]).optional() },
|
|
23790
|
-
outputSchema: listSpaceTasksResponseSchema,
|
|
23791
|
-
annotations: {
|
|
23792
|
-
readOnlyHint: true,
|
|
23793
|
-
destructiveHint: false,
|
|
23794
|
-
idempotentHint: true,
|
|
23795
|
-
openWorldHint: false
|
|
23796
|
-
}
|
|
23797
|
-
}, async ({ phase }) => executeTaskAction(() => listDispatchSpaceTasks(phase)));
|
|
23798
|
-
server.registerTool("create_task", {
|
|
23799
|
-
title: "Create a Task from the current Space message",
|
|
23800
|
-
description: "Create a durable Task only for a clear deliverable that needs ownership, progress, review, or later closure. The source message and Space are fixed by this Wake. The Task is assigned to the current Agent by default and remains To do until start_task is called.",
|
|
23801
|
-
inputSchema: {
|
|
23802
|
-
title: z.string().trim().min(1).max(200),
|
|
23803
|
-
description: z.string().trim().min(1).max(8e3).nullable().optional(),
|
|
23804
|
-
completionConditions: z.array(z.string().trim().min(1).max(500)).max(12).optional(),
|
|
23805
|
-
assigneeProfileId: openMeldRuntimeProfileIdSchema.nullable().optional(),
|
|
23806
|
-
reviewerProfileId: openMeldRuntimeProfileIdSchema.nullable().optional()
|
|
23807
|
-
},
|
|
23808
|
-
outputSchema: spaceTaskMutationReceiptSchema,
|
|
23809
|
-
annotations: {
|
|
23810
|
-
readOnlyHint: false,
|
|
23811
|
-
destructiveHint: false,
|
|
23812
|
-
idempotentHint: false,
|
|
23813
|
-
openWorldHint: false
|
|
23814
|
-
}
|
|
23815
|
-
}, async (body) => executeTaskAction(() => createDispatchSpaceTask(body)));
|
|
23816
|
-
server.registerTool("start_task", {
|
|
23817
|
-
title: "Mark a Space Task in progress",
|
|
23818
|
-
description: "Record that the current assigned Agent has begun advancing this Task. This changes collaboration state and does not start a separate Agent execution.",
|
|
23819
|
-
inputSchema: {
|
|
23820
|
-
taskId: spaceTaskIdSchema,
|
|
23821
|
-
expectedRevision: z.number().int().min(1)
|
|
23822
|
-
},
|
|
23823
|
-
outputSchema: spaceTaskMutationReceiptSchema,
|
|
23824
|
-
annotations: {
|
|
23825
|
-
readOnlyHint: false,
|
|
23826
|
-
destructiveHint: false,
|
|
23827
|
-
idempotentHint: false,
|
|
23828
|
-
openWorldHint: false
|
|
23829
|
-
}
|
|
23830
|
-
}, async ({ expectedRevision, taskId }) => executeTaskAction(() => mutateDispatchSpaceTask({
|
|
23831
|
-
taskId,
|
|
23832
|
-
body: {
|
|
23833
|
-
action: "mark_in_progress",
|
|
23834
|
-
expectedRevision
|
|
23835
|
-
}
|
|
23836
|
-
})));
|
|
23837
|
-
server.registerTool("submit_task_result", {
|
|
23838
|
-
title: "Submit a result for a Space Task",
|
|
23839
|
-
description: "Submit the concrete result and verification for an in-progress Task. A Task with a reviewer moves to In review; otherwise the stated completion boundary moves it to Done. The Space delivers the review handoff to the reviewer.",
|
|
23840
|
-
inputSchema: {
|
|
23841
|
-
taskId: spaceTaskIdSchema,
|
|
23842
|
-
expectedRevision: z.number().int().min(1),
|
|
23843
|
-
summary: z.string().trim().min(1).max(8e3)
|
|
23844
|
-
},
|
|
23845
|
-
outputSchema: spaceTaskMutationReceiptSchema,
|
|
23846
|
-
annotations: {
|
|
23847
|
-
readOnlyHint: false,
|
|
23848
|
-
destructiveHint: false,
|
|
23849
|
-
idempotentHint: false,
|
|
23850
|
-
openWorldHint: false
|
|
23851
|
-
}
|
|
23852
|
-
}, async ({ expectedRevision, summary, taskId }) => executeTaskAction(() => mutateDispatchSpaceTask({
|
|
23853
|
-
taskId,
|
|
23854
|
-
body: {
|
|
23855
|
-
action: "submit_result",
|
|
23856
|
-
expectedRevision,
|
|
23857
|
-
summary
|
|
23858
|
-
}
|
|
23859
|
-
})));
|
|
23860
|
-
server.registerTool("review_task", {
|
|
23861
|
-
title: "Review a Space Task result",
|
|
23862
|
-
description: "Accept the exact result you read or request specific changes as this Task's reviewer. Pass that result's resultRevision as expectedResultRevision and the Task's revision as expectedRevision. A conflict requires reading the current Task and deciding again. Change requests require feedback. The Space delivers review and rework handoffs. Agent-to-Agent rework stops for a human decision after two automatic rounds.",
|
|
23863
|
-
inputSchema: {
|
|
23864
|
-
taskId: spaceTaskIdSchema,
|
|
23865
|
-
expectedRevision: z.number().int().min(1),
|
|
23866
|
-
expectedResultRevision: z.number().int().min(1),
|
|
23867
|
-
decision: z.enum(["accepted", "changes_requested"]),
|
|
23868
|
-
feedback: z.string().trim().min(1).max(8e3).nullable().optional()
|
|
23869
|
-
},
|
|
23870
|
-
outputSchema: spaceTaskMutationReceiptSchema,
|
|
23871
|
-
annotations: {
|
|
23872
|
-
readOnlyHint: false,
|
|
23873
|
-
destructiveHint: false,
|
|
23874
|
-
idempotentHint: false,
|
|
23875
|
-
openWorldHint: false
|
|
23876
|
-
}
|
|
23877
|
-
}, async ({ decision, expectedRevision, expectedResultRevision, feedback, taskId }) => executeTaskAction(() => mutateDispatchSpaceTask({
|
|
23878
|
-
taskId,
|
|
23879
|
-
body: {
|
|
23880
|
-
action: "review",
|
|
23881
|
-
expectedRevision,
|
|
23882
|
-
expectedResultRevision,
|
|
23883
|
-
decision,
|
|
23884
|
-
...feedback === void 0 ? {} : { feedback }
|
|
23885
|
-
}
|
|
23886
|
-
})));
|
|
23887
|
-
server.registerTool("cancel_task", {
|
|
23888
|
-
title: "Cancel a Space Task",
|
|
23889
|
-
description: "Cancel a Task when its accepted commitment should no longer be done. Cancellation fences later Task progress; it does not by itself prove that an Agent execution stopped.",
|
|
23890
|
-
inputSchema: {
|
|
23891
|
-
taskId: spaceTaskIdSchema,
|
|
23892
|
-
expectedRevision: z.number().int().min(1),
|
|
23893
|
-
reason: z.string().trim().min(1).max(1e3)
|
|
23894
|
-
},
|
|
23895
|
-
outputSchema: spaceTaskMutationReceiptSchema,
|
|
23896
|
-
annotations: {
|
|
23897
|
-
readOnlyHint: false,
|
|
23898
|
-
destructiveHint: false,
|
|
23899
|
-
idempotentHint: false,
|
|
23900
|
-
openWorldHint: false
|
|
23901
|
-
}
|
|
23902
|
-
}, async ({ expectedRevision, reason, taskId }) => executeTaskAction(() => mutateDispatchSpaceTask({
|
|
23903
|
-
taskId,
|
|
23904
|
-
body: {
|
|
23905
|
-
action: "cancel",
|
|
23906
|
-
expectedRevision,
|
|
23907
|
-
reason
|
|
23908
|
-
}
|
|
23909
|
-
})));
|
|
23910
|
-
server.registerTool("reply", {
|
|
23911
|
-
title: "Reply in the current OpenMeld Space",
|
|
23912
|
-
description: "Record the exact final public reply for the active OpenMeld Wake. Use real newline characters for paragraph breaks. Optionally wake or reference an Agent, or mention a person, by mention label or profile ID.",
|
|
23913
|
-
inputSchema: {
|
|
23914
|
-
message: z.string().min(1),
|
|
23915
|
-
files: z.array(spaceMessageFileReferenceSchema).max(10).optional(),
|
|
23916
|
-
mentionTargets: z.array(z.string().min(1)).optional(),
|
|
23917
|
-
referenceTargets: z.array(z.string().min(1)).optional(),
|
|
23918
|
-
wakeTargets: z.array(z.string().min(1)).optional()
|
|
23919
|
-
},
|
|
23920
|
-
outputSchema: dispatchSpaceActionToolResultSchema,
|
|
23921
|
-
annotations: {
|
|
23922
|
-
destructiveHint: false,
|
|
23923
|
-
idempotentHint: false,
|
|
23924
|
-
openWorldHint: false,
|
|
23925
|
-
readOnlyHint: false
|
|
23926
|
-
}
|
|
23927
|
-
}, async ({ files, mentionTargets, message, referenceTargets, wakeTargets }) => executeSpaceAction(() => recordDispatchSpaceReply({
|
|
23928
|
-
files,
|
|
23929
|
-
mentionTargets,
|
|
23930
|
-
referenceTargets,
|
|
23931
|
-
text: message,
|
|
23932
|
-
wakeTargets
|
|
23933
|
-
})));
|
|
23934
|
-
server.registerTool("status", {
|
|
23935
|
-
title: "Set the final OpenMeld Space status",
|
|
23936
|
-
description: "Record one final visible status for the active OpenMeld Wake. This closes the Wake; do not use it for interim progress.",
|
|
23937
|
-
inputSchema: {
|
|
23938
|
-
status: FINAL_STATUS_SCHEMA,
|
|
23939
|
-
text: z.string().min(1)
|
|
23940
|
-
},
|
|
23941
|
-
outputSchema: dispatchSpaceActionToolResultSchema,
|
|
23942
|
-
annotations: {
|
|
23943
|
-
destructiveHint: false,
|
|
23944
|
-
idempotentHint: false,
|
|
23945
|
-
openWorldHint: false,
|
|
23946
|
-
readOnlyHint: false
|
|
23947
|
-
}
|
|
23948
|
-
}, async ({ status, text }) => executeSpaceAction(() => recordDispatchSpaceStatus({
|
|
23949
|
-
status,
|
|
23950
|
-
text
|
|
23951
|
-
})));
|
|
23952
|
-
server.registerTool("stay_silent", {
|
|
23953
|
-
title: "Stay silent in the current OpenMeld Space",
|
|
23954
|
-
description: "Record that the active OpenMeld Wake intentionally needs no public reply. Use this only after deciding that silence is the correct final outcome.",
|
|
23955
|
-
inputSchema: { reason: z.string().min(1) },
|
|
23956
|
-
outputSchema: dispatchSpaceActionToolResultSchema,
|
|
23957
|
-
annotations: {
|
|
23958
|
-
destructiveHint: false,
|
|
23959
|
-
idempotentHint: false,
|
|
23960
|
-
openWorldHint: false,
|
|
23961
|
-
readOnlyHint: false
|
|
23962
|
-
}
|
|
23963
|
-
}, async ({ reason }) => executeSpaceAction(() => recordDispatchSpaceSilent({ reason })));
|
|
23964
|
-
return server;
|
|
23965
|
-
}
|
|
23966
|
-
async function runSpaceActionMcpServer() {
|
|
23967
|
-
readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23968
|
-
await createSpaceActionMcpServer().connect(new StdioServerTransport());
|
|
23969
|
-
}
|
|
23970
|
-
async function executeSpaceAction(action) {
|
|
23971
|
-
try {
|
|
23972
|
-
const context = readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23973
|
-
const record = await action();
|
|
23974
|
-
if (record.contextId !== context.contextId || record.nonce !== context.nonce) throw new DispatchSpaceActionClosedError("space_action.context_mismatch", "The saved action does not match the current dispatch context.");
|
|
23975
|
-
const contextState = Date.now() > context.expiresAtMs ? "expired" : "active";
|
|
23976
|
-
return {
|
|
23977
|
-
structuredContent: dispatchSpaceActionToolResultSchema.parse({ receipt: {
|
|
23978
|
-
status: "proposal_saved_locally",
|
|
23979
|
-
actionType: record.action.type,
|
|
23980
|
-
attemptId: context.attemptId,
|
|
23981
|
-
contextId: context.contextId,
|
|
23982
|
-
dispatchId: context.dispatchId,
|
|
23983
|
-
recordedAtMs: record.createdAtMs,
|
|
23984
|
-
contextState,
|
|
23985
|
-
coordinatorAcceptance: "unconfirmed",
|
|
23986
|
-
publication: "unconfirmed"
|
|
23987
|
-
} }),
|
|
23988
|
-
content: [{
|
|
23989
|
-
type: "text",
|
|
23990
|
-
text: `Local proposal saved (receipt: proposal_saved_locally, action: ${record.action.type}). OpenMeld has recorded this unpublished Space action proposal on this computer. ${contextState === "expired" ? "The local context has expired. This receipt identifies the existing record and does not extend action authority. " : ""}Coordinator acceptance and Space publication are NOT yet confirmed; do not report it as posted.`
|
|
23991
|
-
}]
|
|
23992
|
-
};
|
|
23993
|
-
} catch (error) {
|
|
23994
|
-
if (error instanceof DispatchSpaceActionClosedError) return {
|
|
23995
|
-
structuredContent: dispatchSpaceActionToolResultSchema.parse({ receipt: {
|
|
23996
|
-
status: "rejected_closed",
|
|
23997
|
-
reasonCode: error.reasonCode,
|
|
23998
|
-
coordinatorAcceptance: "unconfirmed",
|
|
23999
|
-
publication: "unconfirmed"
|
|
24000
|
-
} }),
|
|
24001
|
-
content: [{
|
|
24002
|
-
type: "text",
|
|
24003
|
-
text: `Action rejected (receipt: rejected_closed, reason: ${error.reasonCode}). ${error.message} New actions are not permitted in this context. Existing records are preserved; Coordinator acceptance and Space publication are unconfirmed.`
|
|
24004
|
-
}],
|
|
24005
|
-
isError: true
|
|
24006
|
-
};
|
|
24007
|
-
return {
|
|
24008
|
-
structuredContent: dispatchSpaceActionToolResultSchema.parse({ receipt: {
|
|
24009
|
-
status: "outcome_unknown",
|
|
24010
|
-
reasonCode: "space_action.recording_outcome_unknown",
|
|
24011
|
-
coordinatorAcceptance: "unconfirmed",
|
|
24012
|
-
publication: "unconfirmed"
|
|
24013
|
-
} }),
|
|
24014
|
-
content: [{
|
|
24015
|
-
type: "text",
|
|
24016
|
-
text: `Action receipt unavailable (receipt: outcome_unknown). ${error instanceof Error ? error.message : String(error)} Existing records are preserved; Coordinator acceptance and Space publication are unconfirmed.`
|
|
24017
|
-
}],
|
|
24018
|
-
isError: true
|
|
24019
|
-
};
|
|
24020
|
-
}
|
|
24021
|
-
}
|
|
24022
|
-
async function executeTaskAction(action) {
|
|
24023
|
-
try {
|
|
24024
|
-
const result = await action();
|
|
24025
|
-
return {
|
|
24026
|
-
structuredContent: result,
|
|
24027
|
-
content: [{
|
|
24028
|
-
type: "text",
|
|
24029
|
-
text: JSON.stringify(result)
|
|
24030
|
-
}]
|
|
24031
|
-
};
|
|
24032
|
-
} catch (error) {
|
|
24033
|
-
return {
|
|
24034
|
-
isError: true,
|
|
24035
|
-
content: [{
|
|
24036
|
-
type: "text",
|
|
24037
|
-
text: error instanceof Error ? error.message : String(error)
|
|
24038
|
-
}]
|
|
24039
|
-
};
|
|
24040
|
-
}
|
|
24041
|
-
}
|
|
24042
|
-
//#endregion
|
|
24043
23117
|
//#region src/space/space-target.ts
|
|
24044
23118
|
const SPACE_ID_HEX_REGEX = /^[0-9a-f]{64}$/i;
|
|
24045
23119
|
const INVALID_SPACE_TARGET_MESSAGE = "Space target must be a 64-character Space ID or an OpenMeld Space URL.";
|
|
@@ -24661,7 +23735,7 @@ function normalizeOptionalString(value) {
|
|
|
24661
23735
|
return normalized.length > 0 ? normalized : null;
|
|
24662
23736
|
}
|
|
24663
23737
|
async function runDefaultSpaceAddMeMembership(input) {
|
|
24664
|
-
const { runSpaceAddMeMembership } = await import("./add-me-membership-
|
|
23738
|
+
const { runSpaceAddMeMembership } = await import("./add-me-membership-CGISMRPF.js");
|
|
24665
23739
|
return await runSpaceAddMeMembership(input);
|
|
24666
23740
|
}
|
|
24667
23741
|
//#endregion
|
|
@@ -24794,7 +23868,7 @@ async function fetchSpaceContract(input) {
|
|
|
24794
23868
|
//#region src/space/contract-set-options.ts
|
|
24795
23869
|
const SPACE_CONTRACT_DISPATCH_POLICY_VALUES = ["mention_only", "listen_all"];
|
|
24796
23870
|
const SPACE_CONTRACT_PUBLICATION_MODE_VALUES = ["collaboration", "raw_context_sharing"];
|
|
24797
|
-
const SPACE_CONTRACT_ALLOWED_ACTION_VALUES =
|
|
23871
|
+
const SPACE_CONTRACT_ALLOWED_ACTION_VALUES = ["post_message", "stay_silent"];
|
|
24798
23872
|
const SPACE_CONTRACT_RESULT_ARCHIVE_MODE_VALUES = [
|
|
24799
23873
|
"none",
|
|
24800
23874
|
"space_reply_only",
|
|
@@ -25024,24 +24098,16 @@ async function runSpaceContractSetFlow(input) {
|
|
|
25024
24098
|
const allowedActions = await multiselect({
|
|
25025
24099
|
message: "Allowed actions",
|
|
25026
24100
|
required: true,
|
|
25027
|
-
initialValues:
|
|
25028
|
-
options: [
|
|
25029
|
-
|
|
25030
|
-
|
|
25031
|
-
|
|
25032
|
-
|
|
25033
|
-
|
|
25034
|
-
|
|
25035
|
-
|
|
25036
|
-
|
|
25037
|
-
hint: "Publish a status bubble"
|
|
25038
|
-
},
|
|
25039
|
-
{
|
|
25040
|
-
value: SPACE_CONTRACT_ALLOWED_ACTION_VALUES[2],
|
|
25041
|
-
label: "stay_silent",
|
|
25042
|
-
hint: "Let system record a silent decision"
|
|
25043
|
-
}
|
|
25044
|
-
]
|
|
24101
|
+
initialValues: input.currentContract.allowedActions.filter((action) => action !== "post_status"),
|
|
24102
|
+
options: [{
|
|
24103
|
+
value: SPACE_CONTRACT_ALLOWED_ACTION_VALUES[0],
|
|
24104
|
+
label: "post_message",
|
|
24105
|
+
hint: "Publish a normal message"
|
|
24106
|
+
}, {
|
|
24107
|
+
value: SPACE_CONTRACT_ALLOWED_ACTION_VALUES[1],
|
|
24108
|
+
label: "stay_silent",
|
|
24109
|
+
hint: "Let system record a silent decision"
|
|
24110
|
+
}]
|
|
25045
24111
|
});
|
|
25046
24112
|
if (isCancel(allowedActions)) {
|
|
25047
24113
|
cancel("Cancelled.");
|
|
@@ -25212,10 +24278,10 @@ function buildExplicitSpaceContractPatch(input) {
|
|
|
25212
24278
|
if (Object.keys(candidatePatch).length === 0) return null;
|
|
25213
24279
|
const parsed = patchSpaceContractBodySchema.safeParse(candidatePatch);
|
|
25214
24280
|
if (!parsed.success) throw new Error(parsed.error.issues[0]?.message ?? "space contract patch is invalid");
|
|
25215
|
-
return {
|
|
24281
|
+
return patchSpaceContractBodySchema.parse({
|
|
25216
24282
|
...parsed.data,
|
|
25217
24283
|
...parsed.data.allowedActions ? { allowedActions: canonicalizeAllowedActions(parsed.data.allowedActions) } : {}
|
|
25218
|
-
};
|
|
24284
|
+
});
|
|
25219
24285
|
}
|
|
25220
24286
|
function pruneUnchangedSpaceContractPatch(input) {
|
|
25221
24287
|
const nextPatch = {};
|
|
@@ -25668,7 +24734,7 @@ function normalizeFolderId(value) {
|
|
|
25668
24734
|
}
|
|
25669
24735
|
async function readLocalFile(path) {
|
|
25670
24736
|
const bytes = await openAsBlob(path);
|
|
25671
|
-
if (bytes.size >
|
|
24737
|
+
if (bytes.size > 1073741824) throw new Error(`Space files must be ${SPACE_FILE_MAX_SIZE_BYTES / (1024 * 1024)} MiB or smaller.`);
|
|
25672
24738
|
return bytes;
|
|
25673
24739
|
}
|
|
25674
24740
|
async function resolveContentBytes(input) {
|
|
@@ -25680,7 +24746,7 @@ async function resolveContentBytes(input) {
|
|
|
25680
24746
|
for await (const chunk of process.stdin) {
|
|
25681
24747
|
const bytes = typeof chunk === "string" ? Buffer.from(chunk) : chunk;
|
|
25682
24748
|
total += bytes.byteLength;
|
|
25683
|
-
if (total >
|
|
24749
|
+
if (total > 10485760) throw new Error(`Standard input is limited to ${SPACE_FILE_RAW_UPLOAD_MAX_BYTES / (1024 * 1024)} MiB. Use --file for larger files.`);
|
|
25684
24750
|
chunks.push(bytes);
|
|
25685
24751
|
}
|
|
25686
24752
|
return Buffer.concat(chunks, total);
|
|
@@ -29679,7 +28745,7 @@ computerCmd.command("disconnect").description("Disconnect this computer from its
|
|
|
29679
28745
|
routeTokens: ["computer", "disconnect"],
|
|
29680
28746
|
view,
|
|
29681
28747
|
run: async () => {
|
|
29682
|
-
const { runComputerDisconnect } = await import("./computer-disconnect-
|
|
28748
|
+
const { runComputerDisconnect } = await import("./computer-disconnect-BWRsge_2.js");
|
|
29683
28749
|
await runComputerDisconnect(computerConnectionIntentSchema.parse(JSON.parse(opts.connectionIntent)), view);
|
|
29684
28750
|
}
|
|
29685
28751
|
});
|
|
@@ -30450,7 +29516,7 @@ spaceActionCmd.command("wake").description("Record a final handoff message that
|
|
|
30450
29516
|
messageParts: Array.isArray(messageParts) ? messageParts : []
|
|
30451
29517
|
});
|
|
30452
29518
|
});
|
|
30453
|
-
spaceActionCmd.command("status").description("Record a final Space status for
|
|
29519
|
+
spaceActionCmd.command("status", { hidden: true }).description("Record a legacy final Space status for an existing dispatch.").argument("<status>", "Final status: done|blocked|needs_input|handoff").argument("<text...>", "Short status text").action(async (status, textParts) => {
|
|
30454
29520
|
await runSpaceActionStatus({
|
|
30455
29521
|
status,
|
|
30456
29522
|
textParts: Array.isArray(textParts) ? textParts : []
|
|
@@ -31894,18 +30960,18 @@ async function main() {
|
|
|
31894
30960
|
if (await runMacOsNativeKeychainHelperIfRequested()) return;
|
|
31895
30961
|
const argv = process.argv.map((arg) => arg === "--h" ? "--help" : arg);
|
|
31896
30962
|
if (argv.length === 5 && argv[2] === "computer" && argv[3] === "connection-review" && argv[4] === "--json") {
|
|
31897
|
-
const { readComputerConnectionReview } = await import("./computer-connection-review-
|
|
30963
|
+
const { readComputerConnectionReview } = await import("./computer-connection-review-RHAoddSS.js");
|
|
31898
30964
|
outLine(JSON.stringify(await readComputerConnectionReview()));
|
|
31899
30965
|
return;
|
|
31900
30966
|
}
|
|
31901
30967
|
if (argv.length === 5 && argv[2] === "service" && argv[4] === "--json") {
|
|
31902
30968
|
if (argv[3] === "control-carrier-capability") {
|
|
31903
|
-
const { readServiceControlCarrierCapability } = await import("./service-control-carrier-capability-
|
|
30969
|
+
const { readServiceControlCarrierCapability } = await import("./service-control-carrier-capability-gMk5gMKU.js");
|
|
31904
30970
|
outLine(JSON.stringify(readServiceControlCarrierCapability()));
|
|
31905
30971
|
return;
|
|
31906
30972
|
}
|
|
31907
30973
|
if (argv[3] === "control-capabilities") {
|
|
31908
|
-
const { readServiceControlCapabilities } = await import("./service-control-capabilities-
|
|
30974
|
+
const { readServiceControlCapabilities } = await import("./service-control-capabilities-3_bdeHXu.js");
|
|
31909
30975
|
emitCliJsonEnvelope({
|
|
31910
30976
|
schemaVersion: 1,
|
|
31911
30977
|
type: "service.control_capabilities",
|
|
@@ -32088,4 +31154,4 @@ main().catch((error) => {
|
|
|
32088
31154
|
//#endregion
|
|
32089
31155
|
export {};
|
|
32090
31156
|
|
|
32091
|
-
//# sourceMappingURL=openmeld-
|
|
31157
|
+
//# sourceMappingURL=openmeld-BFO3sfC_.js.map
|