openmeld 0.3.206 → 0.3.208
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-BkHWMxE4.js → add-me-membership-CZS8PbYL.js} +2 -2
- package/dist/{add-me-membership-BkHWMxE4.js.map → add-me-membership-CZS8PbYL.js.map} +1 -1
- package/dist/{agents-BOTlKiwS.js → agents-pHCyQoFw.js} +1327 -283
- package/dist/agents-pHCyQoFw.js.map +1 -0
- package/dist/{api-client-foundation-DpgDs0rw.js → api-client-foundation-BdBSoby4.js} +3 -3
- package/dist/{api-client-foundation-DpgDs0rw.js.map → api-client-foundation-BdBSoby4.js.map} +1 -1
- package/dist/{api-client-foundation-6ms5gSu8.js → api-client-foundation-JiKYZcZI.js} +1 -1
- package/dist/auth-session-DDsceN-R.js +4 -0
- package/dist/{auth-session-BjSqMLTz.js → auth-session-ijcuaSsZ.js} +266 -75
- package/dist/auth-session-ijcuaSsZ.js.map +1 -0
- package/dist/{base-url-CRAYNW-4.js → base-url-BE3pFiOZ.js} +1 -1
- package/dist/{base-url-9A557X2K.js → base-url-C6sHRNGu.js} +2 -2
- package/dist/{base-url-9A557X2K.js.map → base-url-C6sHRNGu.js.map} +1 -1
- package/dist/cli-binary-manifest-DiUulkp0.js +117 -0
- package/dist/cli-binary-manifest-DiUulkp0.js.map +1 -0
- package/dist/{command-CkbzbvXy.js → command-CewWTp57.js} +53 -12
- package/dist/command-CewWTp57.js.map +1 -0
- package/dist/computer-connection-DK6L1_LF.js +54 -0
- package/dist/computer-connection-DK6L1_LF.js.map +1 -0
- package/dist/computer-connection-review-Dx4svB-T.js +39 -0
- package/dist/computer-connection-review-Dx4svB-T.js.map +1 -0
- package/dist/{computer-setup-continuation-Cd9nhLQ-.js → computer-setup-continuation-Bc0Tb7fi.js} +4 -4
- package/dist/{computer-setup-continuation-Cd9nhLQ-.js.map → computer-setup-continuation-Bc0Tb7fi.js.map} +1 -1
- package/dist/control-plane-D9jDcbMZ.js +1211 -0
- package/dist/control-plane-D9jDcbMZ.js.map +1 -0
- package/dist/daemon-local-state-file-jOXuXrky.js +45 -0
- package/dist/daemon-local-state-file-jOXuXrky.js.map +1 -0
- package/dist/daemon-runtime-lease-Dd4hdHNo.js +50 -0
- package/dist/daemon-runtime-lease-Dd4hdHNo.js.map +1 -0
- package/dist/{daemon-runtime-lease-BG9g0a6Z.js → daemon-runtime-lease-y3n1K0-C.js} +1 -1
- package/dist/{daemon-service-manager-DqVtRLBY.js → daemon-service-manager-Bh0LoLed.js} +1 -1
- package/dist/{daemon-service-manager-BVipiZwK.js → daemon-service-manager-GiMCiTmu.js} +99 -85
- package/dist/daemon-service-manager-GiMCiTmu.js.map +1 -0
- package/dist/daemon-service-runtime-D0LhAIGx.js +3642 -0
- package/dist/daemon-service-runtime-D0LhAIGx.js.map +1 -0
- package/dist/{daemon-state-BwIoDq7_.js → daemon-state-C37ZtIZK.js} +11 -5
- package/dist/daemon-state-C37ZtIZK.js.map +1 -0
- package/dist/{dist-CxadJClH.js → dist-B8I8inkY.js} +768 -579
- package/dist/dist-B8I8inkY.js.map +1 -0
- package/dist/dist-Dtdw34oo.js +4 -0
- package/dist/distribution-DY2fBeSW.js +72 -0
- package/dist/distribution-DY2fBeSW.js.map +1 -0
- package/dist/{elapsed-time-C7P-nWIO.js → elapsed-time-DZLKdEno.js} +7 -4
- package/dist/{elapsed-time-C7P-nWIO.js.map → elapsed-time-DZLKdEno.js.map} +1 -1
- package/dist/{installation-inventory-P49sTjhe.js → installation-inventory-_fMZas6v.js} +7 -6
- package/dist/{installation-inventory-P49sTjhe.js.map → installation-inventory-_fMZas6v.js.map} +1 -1
- package/dist/{lock-CvBnBcFK.js → lock-Dxp6o_t_.js} +56 -7
- package/dist/lock-Dxp6o_t_.js.map +1 -0
- package/dist/{openmeld-ChOHuaqH.js → openmeld-DQNVH1jx.js} +468 -41
- package/dist/openmeld-DQNVH1jx.js.map +1 -0
- package/dist/openmeld-dev.js +1 -1
- package/dist/openmeld-environment-target-NtJYJe1D.js +256 -0
- package/dist/openmeld-environment-target-NtJYJe1D.js.map +1 -0
- package/dist/{openmeld-maintenance-worker-C7WykyDt.js → openmeld-maintenance-worker-CgGOwbP4.js} +9 -8
- package/dist/{openmeld-maintenance-worker-C7WykyDt.js.map → openmeld-maintenance-worker-CgGOwbP4.js.map} +1 -1
- package/dist/{openmeld-tools-update-coordinator-BBZhGo1A.js → openmeld-tools-update-coordinator-D6uuBitR.js} +558 -4107
- package/dist/openmeld-tools-update-coordinator-D6uuBitR.js.map +1 -0
- package/dist/openmeld.js +3 -3
- package/dist/{prepare-session-executor-CLmDoHom.js → prepare-session-executor-DQqmhjGj.js} +15 -13
- package/dist/{prepare-session-executor-CLmDoHom.js.map → prepare-session-executor-DQqmhjGj.js.map} +1 -1
- package/dist/{profiles-BCecj4Pj.js → runtime-transport-DryoU4rm.js} +1041 -2096
- package/dist/runtime-transport-DryoU4rm.js.map +1 -0
- package/dist/service-account-authorization-BN2F75_x.js +56 -0
- package/dist/service-account-authorization-BN2F75_x.js.map +1 -0
- package/dist/service-control-capabilities-BqEr7J9H.js +4 -0
- package/dist/service-control-capabilities-CnG1E-e3.js +54 -0
- package/dist/service-control-capabilities-CnG1E-e3.js.map +1 -0
- package/dist/upgrade-B9gjUOgQ.js +4 -0
- package/dist/{upgrade-l_5Tge_z.js → upgrade-CNeTiYSS.js} +6 -4
- package/dist/upgrade-CNeTiYSS.js.map +1 -0
- package/package.json +2 -2
- package/dist/agents-BOTlKiwS.js.map +0 -1
- package/dist/auth-session-BjSqMLTz.js.map +0 -1
- package/dist/auth-session-ahQ5VXiF.js +0 -4
- package/dist/command-CkbzbvXy.js.map +0 -1
- package/dist/daemon-runtime-lease-CXlGR-iA.js +0 -87
- package/dist/daemon-runtime-lease-CXlGR-iA.js.map +0 -1
- package/dist/daemon-service-manager-BVipiZwK.js.map +0 -1
- package/dist/daemon-state-BwIoDq7_.js.map +0 -1
- package/dist/dist-0boZRalP.js +0 -4
- package/dist/dist-CxadJClH.js.map +0 -1
- package/dist/lock-CvBnBcFK.js.map +0 -1
- package/dist/openmeld-ChOHuaqH.js.map +0 -1
- package/dist/openmeld-tools-update-coordinator-BBZhGo1A.js.map +0 -1
- package/dist/profiles-BCecj4Pj.js.map +0 -1
- package/dist/upgrade-BKEAZKre.js +0 -4
- package/dist/upgrade-l_5Tge_z.js.map +0 -1
|
@@ -1,21 +1,29 @@
|
|
|
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 {
|
|
4
|
+
import { A as isLocalMachineFailureError, D as createActiveSetupConcurrencyIssue, F as accountProfileSpaceCacheDir, I as accountProfileViewPath, M as formatLocalMachineIssueMessage, O as createOrphanedSetupConcurrencyIssue, Q as openMeldBackupsDir, R as accountsDir, T as LocalMachineFailureError, X as normalizeAccountKey, _ as resolveCliContext, _t as skillsDir, a as isOpenMeldOrphanedLockError, at as organizationSkillReleaseDir, b as formatLaneScopeSentence, c as releaseLockSync, d as runWithHeldLock, dt as resolveOpenMeldEnvPreset, et as openMeldManagedBinaryPath, ft as resolveOpenMeldRootDir, i as isOpenMeldLockError, j as toRecognizedLocalMachineFailureError, l as repairOrphanedLegacyLocks, m as OPENMELD_CLI_CONTEXT_ENV_KEY, ot as profileDir, p as LEGACY_OPENMELD_AGENT_SESSION_ENV_KEY, r as buildOpenMeldOrphanedLockAction, rt as openMeldRootDir, st as profileViewPath, t as acquireLock, tt as openMeldManagedVersionBinaryPath, u as resolveOpenMeldOrphanedLockIssue, ut as resolveOpenMeldCliEntryNameFromArgv, vt as spacesDir, w as readProcessStartIdentity, x as resolveOpenMeldLaneDescriptor, yt as systemDir } from "./lock-Dxp6o_t_.js";
|
|
5
|
+
import { $n as spaceDispatchTraceDispatchStatusSchema, $t as createPrepareReadinessApi, Di as signalTextEnvelopeSchema, Ft as createCenterAgentApi, Gn as spaceEntryTargetSchema, Gr as agentActivitySnapshotQuerySchema, Jn as SPACE_DISPATCH_TRACE_RESPONSE_CONTRACT_VERSION_HEADER, Jt as createOrganizationApi, Kn as pluginActionRequestSchema, Lt as createComputerFileAccessApi, Mt as createAgentProfileBindingApi, Nt as createAgentProfileExecutionModeApi, Or as stringifyOrganizationSkillBundleCanonicalJson, Qn as spaceDispatchTraceAttemptStatusSchema, Qt as createPluginsApi, Rn as OPENMELD_HEADER_PROFILE_ID, Tr as organizationSkillBundleSchema, Ur as agentActivityProviderSchema, Vn as OPENMELD_HEADER_SPACE_ADDRESSING_VERSION, Vt as createFeedbackApi, Wr as agentActivitySessionStatusSchema, Xn as resolveRuntimeCoordinatorHeadStatusRootCause, Xr as resolvedSpaceMemberProfileSchema, Xt as createOrganizationSkillsApi, Yn as projectSpaceDispatchTraceFinalVisibleOutcome, Zn as resolveSpaceDispatchTraceRootCause, ar as projectOwnerComputerLocalRuntimes, er as spaceDispatchTraceResponseSchema, gr as createAgentProfileCreationRequestBodySchema, hr as agentProfileCreationConfigurationSchema, ii as agentActivitySessionInventoryQuerySchema, in as createRoutinesApi, ir as ownerComputerDiagnosticsSchema, jr as submitFeedbackIssueRequestSchema, jt as createAgentActivityApi, mr as DEFAULT_AGENT_PROFILE_CREATION_CONFIGURATION, ni as agentActivityInventorySessionOriginSchema, nn as createProjectsApi, nr as projectObservabilityWakeCorrelation, oi as localAgentSessionProviderSchema, or as summarizeComputerFileAccessPolicy, ri as agentActivityInventorySessionStatusSchema, tr as observabilityWakeTraceSelectorSchema, wn as toStructuredApiClientFailure, zt as createCurrentDeviceApi } from "./dist-B8I8inkY.js";
|
|
5
6
|
import { c as agentControllerConversationRefSchema } from "./controller-contract-pe3_Re-c.js";
|
|
6
|
-
import { $ as formatDeviceReplyReadinessLabel, $
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { $ as
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { k as
|
|
17
|
-
import { C as
|
|
18
|
-
import { a as
|
|
7
|
+
import { $ as formatDeviceReplyReadinessLabel, $a as deleteOpenMeldProfile, $i as buildDaemonSystemServiceCommandSpec, At as createModelCatalogReadSession, Bt as setOpenMeldManagedProfileWorkspace, Ci as resolveDispatchSpaceActionMcpServer, Fn as notifyDaemonRouteCatalogChanged, Ft as readProfileWorkspaceConfig, Ga as resolveOpenMeldProfileOrNull, Gi as getSetupFlowCopy, Gr as getAgentControllerPermissionModeDisplayMetadata, Gt as bindProject, H as resolveDaemonServiceFreshnessWarning, Ht as describeProfileWorkspacePathValidationFailure, Ja as clearSelectedOpenMeldProfileId, Ji as resolveViewProfileKey, Jr as listAgentControllerPermissionModeOptions, Jt as listProjectConnectionsWithStatus, Ka as alignSelectedOpenMeldProfileStorage, Ki as parseCliViewMode, Kr as getAgentControllerPermissionModeFieldLabel, Lt as resolveConfiguredProfileWorkspacePath, Mt as resolveProfileWorkspaceRuntime, Nt as ensureOpenMeldManagedProfileWorkspace, Oi as inspectDaemonServiceInventory, P as resolveServiceReadinessFromServiceStatus, Pt as normalizeCustomProfileWorkspacePath, Q as formatAgentReplyReadinessLabel, Qa as createOpenMeldHumanProfile, Qt as removeProjectConnection, Ua as isSelectedOpenMeldProfileRequiredError, Ui as buildDaemonRouteObservationPresentation$1, Ur as createAgentExecutionStatusDisplayRows, Vi as resolveCurrentDaemonExpectedVersion, Vt as validateCustomProfileWorkspacePath, Wa as requireOpenMeldProfile, Wi as buildOnboardingPlan, Xa as setSelectedOpenMeldProfileId, Xi as setProfileDefaultView, Xr as peopleComputerContainsDevice, Ya as getSelectedOpenMeldProfileId, Yi as getProfileDefaultView, Yr as parseAgentControllerRef, Yt as migrateProjectBindingStore, Z as resolveCurrentReplyReadinessSnapshot, Za as createOpenMeldAgentProfile, Zr as projectPeopleComputersToLegacyLocalRuntimes, _o as compareAgentControllerRefsForDisplay, cn as syncDeviceRuntimeStateProjection, d as isCliUpdateCheckApplicable, do as createAuthenticationError, ei as resolveAgentControllerPermissionModeForController, en as runIfAgentActivityBindingGenerationIsCurrent, et as formatHumanReplyReadinessReason$1, fn as createPrimaryBindingReadSession, ft as resolveOpenClawLocalDiagnosticsValue, h as runPendingDaemonServiceUpdate, ho as resolveAuthenticationGuidanceFromMessage, ii as resolveNativeAgentControllerPermissionModeForController, io as updateOpenMeldProfile, jn as listBuiltinAgentsRegistryEntries, kt as syncProfileWorkspaceState, l as readCurrentLocalDeviceId, la as classifyDaemonServiceRunStartability, lt as resolveGatewayChainReadiness, mo as resolveAuthenticationGuidanceFromError, ni as resolveAgentProfileEditCapabilities, nn as unbindProject, no as primeOpenMeldProfilesSessionCache, nt as mapAgentReplyReadinessToLegacyAutoReply, o as assessServerRequiredVersion, pn as resolveAgentProfilePrimaryAgentControllerReport, po as resolveAuthenticationGuidance, qi as resolveRuntimeContext, qn as resolveLocalRegistryAgentIdFromAgentControllerRef, qt as listProjectBindings, ri as resolveEvidenceSyncHealth, rn as canonicalizeLocalProjectPath, ro as resolveOpenMeldProfile, so as buildAgentAuthenticationGuide, ti as resolveAgentExecutionStatus, tn as setDefaultProjectConnection, to as listOpenMeldProfiles, u as assessCliUpdate, ua as classifyDaemonServiceWakeability, uo as buildHumanAuthenticationCard, vn as listAgentTargetStates, zt as setCustomProfileWorkspace } from "./openmeld-tools-update-coordinator-D6uuBitR.js";
|
|
8
|
+
import { Dn as centerAgentInteractionSourceSchema, On as spaceStatusSchema, Pr as START_TRIMMED_NON_EMPTY_STRING_SCHEMA, Qn as spaceFileEntryIdSchema, Un as readSpaceFileTextResponseSchema, Wn as resolveSpaceFileMimeType, Xr as openMeldRequestContextSchema, Yr as openMeldProfileIdSchema, at as spaceContractFieldsSchema, bn as messageEnvelopeSchema, jr as START_BOUNDED_ID_SCHEMA, ot as spaceContractSchema, sr as clientMessageIdSchema, tr as spaceFileRevisionNumberSchema, yr as spaceThreadContextSchema, zn as isSpaceFileTextEditable } from "./runtime-transport-DryoU4rm.js";
|
|
9
|
+
import { Dt as trimmedStringFromUnknown, Tt as nonEmptyTrimmedStringFromUnknown, b as dispatchExecutionSchema, gt as openMeldRuntimeProfileIdSchema } from "./control-plane-D9jDcbMZ.js";
|
|
10
|
+
import { A as withAuthSessionTransitionMutationLock, C as withAdmittedServiceSession, D as cancelServiceAccountAdmission, O as readServiceAccountAdmission, S as updateAuthSessionActiveOrganization, T as ServiceAccountAdmissionError, a as beginAuthSessionTransition, d as getCurrentAuthOwnerUserId, h as normalizeStoredActiveOrganization, k as reserveServiceAccountAdmission, l as getAuthSessionMetadata, n as AuthSessionRecoveryInProgressError, o as buildStoredAuthSessionIdentity, s as clearAuthSession, t as AuthSessionChangedBeforeTransitionError, u as getAuthSessionState, v as readServiceAdmissionSessionWithOwnership, w as runMacOsNativeKeychainHelperIfRequested } from "./auth-session-ijcuaSsZ.js";
|
|
11
|
+
import { t as computerConnectionIntentSchema } from "./computer-connection-DK6L1_LF.js";
|
|
12
|
+
import { _ as readSelectedSkillDocument, f as ensureLocalSkills, n as collectSkillsReadinessSnapshot } from "./installation-inventory-_fMZas6v.js";
|
|
13
|
+
import { $ as buildHumanErrorCopy, $n as readAgentActivityIntegrationStatus, $t as buildDispatchResultMessageReadProjection, A as runDaemonBackgroundStartForDecision, Ar as cliJsonErrorEnvelopeSchema, At as submitRuntimeAgentControllerReport, B as runDaemonTeardownStrict, Bn as enqueueAgentActivityHookEvent, C as resolveGatewayWebOrigin, Cr as isReturnKeypress, Ct as readDispatchSpaceActionContextForReceiptFromEnv, D as isManagedSystemServiceBootstrapRun, Dr as isCurrentCommandCheckScopeActive, Dt as validateLocalProjectConnectionPath, E as bestEffortStopCurrentLaneDaemonService, Er as getCurrentCommandCheckState, Et as LocalProjectConnectionError, F as runDaemonRunAfterEntryChecks, Fn as resolveObservedAgentActivityBinding, Fr as acceptOrganizationJoinLinkBodySchema, G as buildProfileWorkspacePresentation, Gn as readControllerTaskLifecycleOutboxHealth, H as formatServiceParticipationReadinessLabel, Hn as readAgentActivityOutboxHealth, I as runDaemonServiceDetached, In as normalizeSharedSessionTitle, Ir as getOrganizationJoinLinkResponseSchema, J as createQuietPresenter, Jn as resolveAgentActivityRouteForPath, K as buildProfileWorkspaceRows, Kn as isAgentActivityRouteRegistered, L as runDaemonSnapshot, Ln as readCodexSessionTitles, Lr as organizationJoinLinkErrorResponseSchema, M as runDaemonInstall, Mr as cliJsonSkillsListEnvelopeSchema, N as runDaemonInterrupt, Nn as syncLocalAgentActivity, Nr as cliJsonSkillsLoadEnvelopeSchema, O as runDaemon, Or as resetCurrentCommandCheckState, Ot as readRuntimeReportingHealthState, P as runDaemonReinstall, Pn as buildAgentActivityEvent, Pr as cliJsonSkillsShowEnvelopeSchema, Q as runDaemonStartDecisionPrompt, Qn as installAgentActivityIntegrations, R as runDaemonStatusFlow, Rn as readAgentActivityContextForPath, Rr as organizationJoinLinkManagementQuerySchema, Rt as inspectSpaceCacheFile, Sr as promptTextEntry, T as runDaemonServiceParticipationGate, Tr as finishCurrentCommandCheckScope, Tt as writeDispatchSpaceActionRecord, Un as removeProjectOutbox, V as runDaemonUninstall, Vn as removeProjectInbox, W as resolveServiceParticipationReadiness, Wn as enqueueControllerTaskLifecycleEventWhileLocked, Y as emitDaemonAgentOverview, Yn as unregisterAgentActivityRoute, Yt as upsertSpaceConfig, Z as shouldEmitAgentOverview, Zn as defaultManagedIntegrationPaths, _ as promptSearchSelect, _n as formatRemovedCcRelationMessage, _r as fetchAuthUserSnapshot, _t as toStructuredGatewayFailure, a as runAgentsCustomRemove, ar as runAuthLogin, at as resolveLocalComponentsStatus, bt as readDispatchOwnedRuntimeGuard, c as runAgentsDisable, cr as runAuthStatus, ct as fetchSpaceUpdates, d as runAgentsManage, dr as buildAuthStatusSnapshot, dt as updateSpaceMeta, en as buildDispatchResultReplyWorkflowProjection, er as resolveAgentActivityDispatcherCommand, et as renderHumanErrorCard, f as runAgentsRepair, fr as formatActiveOrganizationLabel, gt as readGatewayTextResponse, h as promptSearchMultiselect, ht as readGatewayJsonResponse, i as runAgentsCustomList, ir as evaluateCommandAuthentication, j as runDaemonCancel, jn as readRecentDaemonDispatchJournalEvents, jr as cliJsonOutputEnvelopeSchema, k as runDaemonAutostart, kr as startCurrentCommandCheckScope, kt as submitProfileRuntimeAgentControllerReport, l as runAgentsEnable, ln as buildSpaceRoundReadProjection, lr as exchangeOneTimeTokenAuthSession, lt as createCliSpaceApi, m as formatTransportModeDisplay, mr as renderTextInfoCard, n as runAgentsConfig, nn as buildSignalIndex, nr as buildCommandAuthenticationPromptMessage, nt as emitCliJsonEnvelope, o as runAgentsCustomUpdate, or as runAuthLogout, ot as writeInstalledLocalComponentsSnapshot, p as runAgentsShow, pn as createSpaceMemberIdentityIndex, pr as renderInfoCard, q as reconcileCliVersionView, qn as registerAgentActivityRoute, r as runAgentsCustomAdd, rn as buildSignalMessageReadProjection, rr as ensureCommandAuthenticationOrCancel, rt as runDaemonStartupPreflight, s as runAgentsDetect, sr as runAuthMenu, st as resolveDaemonServiceParticipationStatus, t as runAgents, tn as buildPublicSpaceEntryUrl, tr as uninstallAgentActivityIntegrations, tt as renderHumanTextErrorCard, u as runAgentsList, un as buildUpdatesReplyWorkflowProjection, ur as buildAuthStatusRows, ut as fetchSpaceMeta, vt as parseJsonResponse, w as resolveSpaceWebGatewayOrigin, wr as runInteractivePrompt, wt as readDispatchSpaceActionContextFromEnv, xt as DispatchSpaceActionClosedError, yt as assertDispatchOwnedRuntimePublicWriteAllowed, z as runDaemonStop, zn as removeAgentActivityContextCache, zr as revokeOrganizationJoinLinkResponseSchema } from "./agents-pHCyQoFw.js";
|
|
14
|
+
import { a as serviceAccountControlRequestSchema, n as resolveOpenMeldDistribution, t as isBinaryDistribution } from "./distribution-DY2fBeSW.js";
|
|
15
|
+
import { r as readDaemonRuntimeLease } from "./daemon-runtime-lease-Dd4hdHNo.js";
|
|
16
|
+
import { Bt as readDaemonServiceContract, Mt as requestLocalAgentActivitySync, Pt as requestLocalDaemonShutdown, Vt as upsertDaemonServiceContract, X as buildInstallSelfJsonPayload, Z as performManagedInstall, jt as LocalDaemonControlPlaneClientError, lt as compareSemver, nt as OPENMELD_VERSION, r as readCurrentDaemonRuntimeContext, ut as ensureVersionStateReady } from "./daemon-service-runtime-D0LhAIGx.js";
|
|
17
|
+
import { $ as resolveCreateProfileKind, A as parseEnvelope, B as resolveHumanControllerDisplayName, C as toSpaceMetaUpsertInput, D as formatHumanReadTargetList, E as buildHumanReplyContextSummary, F as resolveOpenMeldProfileForSpaceCommand, G as printOpenMeldBanner, H as resolveAgentProfileSetup, I as emitSpaceAgentOverview, J as renderOpenMeldLogo, K as renderOpenMeldBrandBlockLines, L as emitSpaceCliAgentOverview, M as assertFullSignalIdArgument, N as assertValidSpaceIdTarget, O as resolveLinkAccessLabel, P as prepareAuthenticatedSpaceCommandContext, Q as createProfileByKind, R as prepareLocalAgentReadiness, S as loadSpaceSignalIndexOrNull, T as buildFormalSignalReadPayload, U as colorizeAgentLabel, V as persistAgentTransportSelection, W as colorizeDisplayProfileLabel, X as resolveSpaceSendText, Y as renderOpenMeldTagline, Z as resolveSpaceTaskSelection, _ as runSpaceWriteWithPasswordRetry, a as runSpaceDelete, b as buildIdentityOnlyMembersSnapshotForReadProjection, c as runSpaceLeave, d as runSpaceRemoveMembers, et as resolveCreateProfileName, f as runSpaceSend, g as runSpaceReadWithPasswordRetry, h as uploadPreparedSpaceFiles, i as runSpaceCreate, j as isSpaceCommandOutputHandledError, k as resolveOrganizationVisibilityLabel, l as runSpaceList, m as prepareRequestedSpaceSendFiles, n as promptAndConfirmSpacePassword, nt as assessActionParticipationCandidate, o as runSpaceHistory, p as runSpaceWatch, q as renderOpenMeldHeader, r as runSpaceAddMembers, s as runSpaceJoin, t as buildCreateSpacePasswordPromptConfig, tt as ensureAgentProfileRuntimeBinding, u as runSpacePassword, v as buildHumanReadSignalsTranscriptItems, w as buildFormalDispatchResultReadPayload, x as loadSpaceIdentityDirectoryOrNull, y as emitHumanReadSignalsTextProjection, z as buildReplyReadinessGuidance } from "./command-CewWTp57.js";
|
|
18
|
+
import { A as createSpaceMenuGuideError, Bt as formatDualViewGuideForDisplay, C as createSpaceAddMembersGuideError, F as createSpaceRemoveMembersGuideError, G as createStartAgentIdentityGuideError, H as createSpaceTargetGuideError, Ht as formatAgentOverviewPayload, I as createSpaceResultGuideError, It as registerBuiltinAgentSelectionOptions, J as OPENMELD_AGENT_MENTAL_MODEL_LINES, Jt as sanitizeTerminalDisplayText, K as createStartAuthenticationGuideError, M as createSpacePublicationSetGuideError, Ot as getCliVersionInfo, Q as areAllowedActionsEquivalent, Qt as outLine, T as createSpaceContractSetGuideError, Tt as registerSkillsTargetSelectionOptions, V as createSpaceSubcommandTargetGuideError, Vt as buildDualViewGuideMessage, W as createSpaceUpdatesGuideError, X as SPACE_CONTRACT_ALLOWED_ACTION_ORDER, Xt as errLine, Yt as formatMessage, Zt as outJsonLine, _ as createProfileActionGuideError, _t as registerSpaceMemberSelectionOptions, b as createResetConfirmationGuideError, bt as SPACE_ADD_MEMBERS_PROGRESS_HEARTBEAT_MS, et as buildAgentFacingPublicationModeGuideLines, g as createDoctorFailedGuideError, jt as registerAuthLoginRequestOptions, k as createSpaceLeaveGuideError, kt as registerDaemonControlTargetOptions, m as canUseInteractivePrompts, mt as getCommandHintsFromContract, ot as canonicalizeAllowedActions, qt as createPresenter, v as createProfileCreateGuideError, w as createSpaceAliasTargetGuideError, y as createProfileMenuGuideError, zt as DualViewGuideError } from "./elapsed-time-DZLKdEno.js";
|
|
19
|
+
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-C6sHRNGu.js";
|
|
20
|
+
import { A as getDaemonStatus, K as withDaemonServiceRunLock } from "./daemon-state-C37ZtIZK.js";
|
|
21
|
+
import { S as resolveDaemonServiceManager } from "./daemon-service-manager-GiMCiTmu.js";
|
|
22
|
+
import { a as formatOpenMeldCliCommand, c as formatOpenMeldCliTextBlock, d as resolveSetupFollowUpCliEntryCommand, f as resolveUserFacingCliEntryCommand, i as formatInlineOpenMeldCliCommands, o as formatOpenMeldCliCommands, r as resolveAuthBaseUrl, s as formatOpenMeldCliLine, t as resolveOpenMeldEnvironmentTarget, u as formatProfileAwareOpenMeldCliCommands } from "./openmeld-environment-target-NtJYJe1D.js";
|
|
23
|
+
import { n as resolveServiceAccountIdentity, r as runServiceAccountCarrier } from "./service-account-authorization-BN2F75_x.js";
|
|
24
|
+
import { c as buildRequestAuthHeaders, d as buildOpenMeldRequestContextFromProfile, n as fetchSpaceRequestWithTimeout, p as deriveAuthBaseUrlFromGatewayUrl, s as buildOpenMeldRequestContextHeadersWithAuth, t as createCliApiClientFoundation } from "./api-client-foundation-BdBSoby4.js";
|
|
25
|
+
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-DQqmhjGj.js";
|
|
26
|
+
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-CNeTiYSS.js";
|
|
19
27
|
import { createHash, randomUUID } from "node:crypto";
|
|
20
28
|
import { homedir, tmpdir } from "node:os";
|
|
21
29
|
import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
@@ -26,8 +34,8 @@ import { constants, openAsBlob, readFileSync, realpathSync } from "node:fs";
|
|
|
26
34
|
import process$1 from "node:process";
|
|
27
35
|
import { execFile, spawn } from "node:child_process";
|
|
28
36
|
import { setTimeout as setTimeout$1 } from "node:timers/promises";
|
|
29
|
-
import pc from "picocolors";
|
|
30
37
|
import { promisify } from "node:util";
|
|
38
|
+
import pc from "picocolors";
|
|
31
39
|
import { cancel, confirm, intro, isCancel, multiselect, note, outro, select, spinner, text } from "@clack/prompts";
|
|
32
40
|
import { Command, Option } from "commander";
|
|
33
41
|
import { performance } from "node:perf_hooks";
|
|
@@ -482,6 +490,50 @@ z$1.strictObject({
|
|
|
482
490
|
});
|
|
483
491
|
const getSpaceDispatchResultResponseSchema = dispatchResultSchema;
|
|
484
492
|
//#endregion
|
|
493
|
+
//#region ../../packages/schemas/dist/schemas/space-mesh/dispatch-space-action-receipt.js
|
|
494
|
+
const dispatchSpaceActionClosedReasonCodeSchema = z$1.enum(["space_action.context_expired", "space_action.context_mismatch"]);
|
|
495
|
+
const dispatchSpaceActionReceiptSchema = z$1.discriminatedUnion("status", [
|
|
496
|
+
z$1.strictObject({
|
|
497
|
+
status: z$1.literal("proposal_saved_locally"),
|
|
498
|
+
actionType: z$1.enum([
|
|
499
|
+
"post_message",
|
|
500
|
+
"post_status",
|
|
501
|
+
"stay_silent"
|
|
502
|
+
]),
|
|
503
|
+
attemptId: z$1.string().min(1),
|
|
504
|
+
contextId: z$1.string().min(1),
|
|
505
|
+
dispatchId: z$1.string().min(1),
|
|
506
|
+
recordedAtMs: z$1.number().int().nonnegative(),
|
|
507
|
+
contextState: z$1.enum(["active", "expired"]),
|
|
508
|
+
coordinatorAcceptance: z$1.literal("unconfirmed"),
|
|
509
|
+
publication: z$1.literal("unconfirmed")
|
|
510
|
+
}),
|
|
511
|
+
z$1.strictObject({
|
|
512
|
+
status: z$1.literal("rejected_closed"),
|
|
513
|
+
reasonCode: dispatchSpaceActionClosedReasonCodeSchema,
|
|
514
|
+
coordinatorAcceptance: z$1.literal("unconfirmed"),
|
|
515
|
+
publication: z$1.literal("unconfirmed")
|
|
516
|
+
}),
|
|
517
|
+
z$1.strictObject({
|
|
518
|
+
status: z$1.literal("outcome_unknown"),
|
|
519
|
+
reasonCode: z$1.literal("space_action.recording_outcome_unknown"),
|
|
520
|
+
coordinatorAcceptance: z$1.literal("unconfirmed"),
|
|
521
|
+
publication: z$1.literal("unconfirmed")
|
|
522
|
+
})
|
|
523
|
+
]);
|
|
524
|
+
const dispatchSpaceActionToolResultSchema = z$1.strictObject({ receipt: dispatchSpaceActionReceiptSchema });
|
|
525
|
+
//#endregion
|
|
526
|
+
//#region ../../packages/schemas/dist/schemas/space-mesh/dispatch-space-history.js
|
|
527
|
+
const dispatchSpaceHistoryRequestSchema = z$1.strictObject({});
|
|
528
|
+
const dispatchSpaceHistoryResultSchema = z$1.strictObject({
|
|
529
|
+
spaceId: z$1.string().min(1),
|
|
530
|
+
sourceSignalId: z$1.string().min(1),
|
|
531
|
+
beforeCount: z$1.literal(20),
|
|
532
|
+
afterCount: z$1.literal(0),
|
|
533
|
+
signals: z$1.array(z$1.record(z$1.string(), z$1.unknown())).max(21),
|
|
534
|
+
nextCursor: z$1.string().min(1).nullable()
|
|
535
|
+
});
|
|
536
|
+
//#endregion
|
|
485
537
|
//#region ../../packages/schemas/dist/space-invitation.js
|
|
486
538
|
const id = z$1.string().trim().min(1).max(200);
|
|
487
539
|
const spaceInvitationRequestSchema = z$1.discriminatedUnion("action", [
|
|
@@ -1943,6 +1995,7 @@ const COMMAND_CHECK_REQUIREMENTS = Object.freeze({
|
|
|
1943
1995
|
"profile.list": buildCommandChecks(REQUIRED_DISCLAIMER, OPTIONAL_CLI_UPDATE, REQUIRED_SIGN_IN),
|
|
1944
1996
|
"profile.set": buildCommandChecks(REQUIRED_DISCLAIMER, OPTIONAL_CLI_UPDATE, AUTO_FIX_LOCAL_RUNTIME, REQUIRED_SIGN_IN),
|
|
1945
1997
|
"profile.show": buildCommandChecks(REQUIRED_DISCLAIMER, OPTIONAL_CLI_UPDATE, AUTO_FIX_LOCAL_RUNTIME, REQUIRED_SIGN_IN),
|
|
1998
|
+
"profile.execution-mode": buildCommandChecks(REQUIRED_DISCLAIMER, OPTIONAL_CLI_UPDATE, REQUIRED_SIGN_IN),
|
|
1946
1999
|
"profile.update": buildCommandChecks(REQUIRED_DISCLAIMER, OPTIONAL_CLI_UPDATE, AUTO_FIX_LOCAL_RUNTIME, REQUIRED_SIGN_IN),
|
|
1947
2000
|
"profile.delete": buildCommandChecks(REQUIRED_DISCLAIMER, OPTIONAL_CLI_UPDATE, AUTO_FIX_LOCAL_RUNTIME, REQUIRED_SIGN_IN),
|
|
1948
2001
|
"profile.requests.create": buildCommandChecks(REQUIRED_DISCLAIMER, OPTIONAL_CLI_UPDATE, REQUIRED_SIGN_IN),
|
|
@@ -2188,6 +2241,8 @@ const COMMAND_ENTRY_NAME_BY_ROUTE = {
|
|
|
2188
2241
|
"profile show": "profile.show",
|
|
2189
2242
|
"profiles update": "profile.update",
|
|
2190
2243
|
"profile update": "profile.update",
|
|
2244
|
+
"profile execution-mode": "profile.execution-mode",
|
|
2245
|
+
"profiles execution-mode": "profile.execution-mode",
|
|
2191
2246
|
"profiles delete": "profile.delete",
|
|
2192
2247
|
"profile delete": "profile.delete",
|
|
2193
2248
|
"profile requests create": "profile.requests.create",
|
|
@@ -3084,6 +3139,12 @@ const COMMAND_ENTRY_COPY_BY_NAME = Object.freeze({
|
|
|
3084
3139
|
cliUpdateAction: "updating a profile",
|
|
3085
3140
|
serviceAction: null
|
|
3086
3141
|
},
|
|
3142
|
+
"profile.execution-mode": {
|
|
3143
|
+
signInAction: "managing independent-task admission",
|
|
3144
|
+
profileAction: null,
|
|
3145
|
+
cliUpdateAction: "managing independent-task admission",
|
|
3146
|
+
serviceAction: null
|
|
3147
|
+
},
|
|
3087
3148
|
"profile.delete": {
|
|
3088
3149
|
signInAction: "deleting a profile",
|
|
3089
3150
|
profileAction: null,
|
|
@@ -11637,6 +11698,135 @@ function resolveRealPathOrNull$1(path) {
|
|
|
11637
11698
|
}
|
|
11638
11699
|
}
|
|
11639
11700
|
//#endregion
|
|
11701
|
+
//#region src/commands/service-account-control.ts
|
|
11702
|
+
function refused(reason, message) {
|
|
11703
|
+
throw new ServiceAccountAdmissionError(reason, message);
|
|
11704
|
+
}
|
|
11705
|
+
async function runServiceAccountControl(request) {
|
|
11706
|
+
const parsed = serviceAccountControlRequestSchema.safeParse(request);
|
|
11707
|
+
if (!parsed.success) refused("missing_account", "Choose a signed-in account before controlling this Service.");
|
|
11708
|
+
const input = parsed.data;
|
|
11709
|
+
if (process.platform === "win32") refused("unsupported_platform", "Account-checked Service control is not available on Windows yet.");
|
|
11710
|
+
const auth = await getAuthSessionState();
|
|
11711
|
+
if (auth.state !== "valid" || !auth.session) refused("authentication_required", "Sign in to the CLI with the matching account and try again.");
|
|
11712
|
+
const preparedSession = auth.session;
|
|
11713
|
+
if (preparedSession.user?.id !== input.expectedAccount) refused("account_mismatch", "The CLI is signed in to a different account. Sign in with the matching account and try again.");
|
|
11714
|
+
if ((await fetchAuthUserSnapshot({
|
|
11715
|
+
authBaseUrl: preparedSession.authBaseUrl,
|
|
11716
|
+
accessToken: preparedSession.accessToken
|
|
11717
|
+
})).id !== input.expectedAccount) refused("account_mismatch", "The CLI session belongs to a different account. Sign in again and retry.");
|
|
11718
|
+
await withDaemonServiceRunLock(async () => {
|
|
11719
|
+
const contract = await readDaemonServiceContract();
|
|
11720
|
+
if (!contract) refused("ownership_unknown", "Connect this computer through OpenMeld setup before controlling its Service.");
|
|
11721
|
+
const observed = await readCurrentDaemonRuntimeContext();
|
|
11722
|
+
const lease = await readDaemonRuntimeLease();
|
|
11723
|
+
if (input.operation === "start" && observed.effectiveRuntimeStatus !== "not_running") refused("busy", "The Service is already running or its state is uncertain. Check Service status before trying again.");
|
|
11724
|
+
if (input.operation === "stop" && (observed.effectiveRuntimeStatus !== "running" || !lease || lease.generation !== contract.generation)) refused("ownership_unknown", "OpenMeld could not verify the running Service. Check Service status before trying again.");
|
|
11725
|
+
let boundSession = preparedSession;
|
|
11726
|
+
const reservation = await withAuthSessionTransitionMutationLock(async () => {
|
|
11727
|
+
boundSession = await readServiceAdmissionSessionWithOwnership();
|
|
11728
|
+
if (boundSession.accessToken !== preparedSession.accessToken || boundSession.createdAt !== preparedSession.createdAt || boundSession.user?.id !== input.expectedAccount) refused("account_changed", "The CLI sign-in changed before this action was accepted. Check the account and try again.");
|
|
11729
|
+
const current = await readDaemonServiceContract();
|
|
11730
|
+
if (!current || JSON.stringify(current) !== JSON.stringify(contract)) refused("ownership_changed", "The Service changed before this action was accepted. Check its status and try again.");
|
|
11731
|
+
const identity = await resolveServiceAccountIdentity(boundSession, contract);
|
|
11732
|
+
if (input.operation === "start" && contract.desiredState !== "background") identity.contractGeneration += 1;
|
|
11733
|
+
return await reserveServiceAccountAdmission({
|
|
11734
|
+
operation: input.operation,
|
|
11735
|
+
identity,
|
|
11736
|
+
...input.operation === "stop" && lease ? { target: {
|
|
11737
|
+
ownerPid: lease.pid,
|
|
11738
|
+
ownerProcessStartedAt: readProcessStartIdentity(lease.pid) ?? refused("ownership_unknown", "OpenMeld could not identify the Service process. Check its status and try again.")
|
|
11739
|
+
} } : {}
|
|
11740
|
+
});
|
|
11741
|
+
});
|
|
11742
|
+
try {
|
|
11743
|
+
await withAdmittedServiceSession(boundSession, async () => {
|
|
11744
|
+
if (input.operation === "stop") {
|
|
11745
|
+
await stopReservedService(contract, reservation.id, lease?.pid ?? 0);
|
|
11746
|
+
return;
|
|
11747
|
+
}
|
|
11748
|
+
const manager = contract.serviceController === "legacy-detached" ? null : await resolveDaemonServiceManager(contract.serviceController);
|
|
11749
|
+
if (contract.serviceController !== "legacy-detached" && !(manager && (await manager.status()).installed)) refused("installation_required", "This Service needs setup before it can start. Run OpenMeld setup and try again.");
|
|
11750
|
+
await upsertDaemonServiceContract({
|
|
11751
|
+
...contract,
|
|
11752
|
+
desiredState: "background"
|
|
11753
|
+
});
|
|
11754
|
+
if (contract.serviceController === "legacy-detached") {
|
|
11755
|
+
const runtime = await resolveRuntimeContext({ view: "agent" });
|
|
11756
|
+
await runDaemonServiceDetached({
|
|
11757
|
+
accountAdmissionId: reservation.id,
|
|
11758
|
+
deviceId: contract.deviceId,
|
|
11759
|
+
gatewayUrl: contract.gatewayUrl,
|
|
11760
|
+
heartbeatMs: contract.heartbeatMs,
|
|
11761
|
+
runtime,
|
|
11762
|
+
presenter: createQuietPresenter(runtime),
|
|
11763
|
+
mode: "background"
|
|
11764
|
+
});
|
|
11765
|
+
} else if (manager) {
|
|
11766
|
+
await manager.deactivate();
|
|
11767
|
+
await manager.install(buildDaemonSystemServiceCommandSpec({
|
|
11768
|
+
controller: manager.controller,
|
|
11769
|
+
accountAdmissionId: reservation.id
|
|
11770
|
+
}));
|
|
11771
|
+
await manager.start();
|
|
11772
|
+
}
|
|
11773
|
+
await waitForAdmittedService(reservation.id);
|
|
11774
|
+
});
|
|
11775
|
+
} finally {
|
|
11776
|
+
await cancelServiceAccountAdmission(reservation.id);
|
|
11777
|
+
}
|
|
11778
|
+
});
|
|
11779
|
+
}
|
|
11780
|
+
async function waitForAdmittedService(id) {
|
|
11781
|
+
const deadline = Date.now() + 15e3;
|
|
11782
|
+
while (Date.now() < deadline) {
|
|
11783
|
+
const current = await readServiceAccountAdmission();
|
|
11784
|
+
const runtime = await readCurrentDaemonRuntimeContext();
|
|
11785
|
+
if (current?.id === id && current.state === "admitted" && current.carrier?.ownerPid === runtime.runtimeStatus.pid && runtime.effectiveRuntimeStatus === "running") return;
|
|
11786
|
+
await setTimeout$1(50);
|
|
11787
|
+
}
|
|
11788
|
+
refused("startup_unconfirmed", "OpenMeld could not confirm that this Service started. Check Service status before trying again.");
|
|
11789
|
+
}
|
|
11790
|
+
async function stopReservedService(contract, id, pid) {
|
|
11791
|
+
await requestAccountCheckedServiceStop({
|
|
11792
|
+
id,
|
|
11793
|
+
manager: contract.serviceController === "legacy-detached" ? null : await resolveDaemonServiceManager(contract.serviceController)
|
|
11794
|
+
});
|
|
11795
|
+
const admitted = await readServiceAccountAdmission();
|
|
11796
|
+
if (admitted?.id !== id || admitted.state !== "admitted" || admitted.carrier?.ownerPid !== pid) refused("admission_unconfirmed", "OpenMeld could not verify that the matching Service accepted Stop. Check Service status before trying again.");
|
|
11797
|
+
const current = await readCurrentDaemonRuntimeContext();
|
|
11798
|
+
if (current.runtimeStatus.pid !== null && current.runtimeStatus.pid !== pid) refused("ownership_changed", "Another Service instance is now running. Its state was left unchanged.");
|
|
11799
|
+
await runDaemonStop({
|
|
11800
|
+
json: true,
|
|
11801
|
+
view: "agent"
|
|
11802
|
+
}, { completedControlledShutdownOwnerPid: pid });
|
|
11803
|
+
}
|
|
11804
|
+
async function requestAccountCheckedServiceStop({ id, manager }) {
|
|
11805
|
+
const wasEnabled = manager ? (await manager.status()).enabled : false;
|
|
11806
|
+
if (manager) await manager.disableAutostart();
|
|
11807
|
+
try {
|
|
11808
|
+
if (!(await requestLocalDaemonShutdown({
|
|
11809
|
+
payload: {
|
|
11810
|
+
accountAdmissionId: id,
|
|
11811
|
+
mode: "graceful",
|
|
11812
|
+
gracePeriodMs: 2e3
|
|
11813
|
+
},
|
|
11814
|
+
timeoutMs: 15e3
|
|
11815
|
+
})).accepted) throw new Error("The Service did not confirm controlled shutdown.");
|
|
11816
|
+
} catch (error) {
|
|
11817
|
+
if (manager && wasEnabled && error instanceof LocalDaemonControlPlaneClientError && error.code === "service.account_admission.stop_refused") try {
|
|
11818
|
+
await manager.enableAutostart();
|
|
11819
|
+
} catch (restoreError) {
|
|
11820
|
+
throw new AggregateError([error, restoreError], "Stop was refused and its previous autostart setting could not be restored.");
|
|
11821
|
+
}
|
|
11822
|
+
if (!(error instanceof LocalDaemonControlPlaneClientError && error.code === "service.account_admission.stop_refused")) {
|
|
11823
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
11824
|
+
refused("stop_unconfirmed", `Stop may already be in progress. ${manager ? "Autostart remains disabled. " : ""}Check Service status before trying again. ${detail}`);
|
|
11825
|
+
}
|
|
11826
|
+
throw error;
|
|
11827
|
+
}
|
|
11828
|
+
}
|
|
11829
|
+
//#endregion
|
|
11640
11830
|
//#region src/config/space-dispatch-lookup-api.ts
|
|
11641
11831
|
async function fetchSpaceDispatchLookup(input) {
|
|
11642
11832
|
const endpoint = new URL(toSpaceDispatchLookupUrl(input.baseUrl, input.space));
|
|
@@ -13376,6 +13566,14 @@ function buildAgentTraceCompactSummary(input) {
|
|
|
13376
13566
|
reasonCode: resolveTraceRootCause(trace),
|
|
13377
13567
|
visibleOutcome: finalVisibleOutcome.status
|
|
13378
13568
|
};
|
|
13569
|
+
if (finalVisibleOutcome.status === "not_applicable" && !trace.runtimeCoordinatorExecution && headLifecycle?.readStatus === "found" && headLifecycle.status === "queued" && !headLifecycle.runtimeCoordinatorExecutionId) return {
|
|
13570
|
+
...nativeDeliveryEvidence,
|
|
13571
|
+
currentState: headLifecycle.status,
|
|
13572
|
+
delivered: false,
|
|
13573
|
+
nextAction: "wait for the Agent's execution slot, then rerun trace with the same selector",
|
|
13574
|
+
reasonCode: resolveTraceRootCause(trace),
|
|
13575
|
+
visibleOutcome: finalVisibleOutcome.status
|
|
13576
|
+
};
|
|
13379
13577
|
if (finalVisibleOutcome.status === "not_applicable" && trace.finalVisibleMessageLinkage?.status === "projection_pending") return {
|
|
13380
13578
|
...nativeDeliveryEvidence,
|
|
13381
13579
|
currentState: "final_projection_pending",
|
|
@@ -13428,12 +13626,6 @@ function formatRuntimeCoordinatorHeadLifecycleSummary(headLifecycle) {
|
|
|
13428
13626
|
function resolveTraceRootCause(trace) {
|
|
13429
13627
|
return resolveSpaceDispatchTraceRootCause(trace);
|
|
13430
13628
|
}
|
|
13431
|
-
function resolveRuntimeCoordinatorHeadStatusRootCause(status) {
|
|
13432
|
-
if (status === "accepted") return "runtime_coordinator.head_accepted";
|
|
13433
|
-
if (status === "execution_linked") return "runtime_coordinator.head_execution_linked";
|
|
13434
|
-
if (status === "waiting") return "runtime_coordinator.head_waiting";
|
|
13435
|
-
return "runtime_coordinator.head_publication_intent_ready";
|
|
13436
|
-
}
|
|
13437
13629
|
const PRE_EXECUTION_NO_EXECUTION_EVIDENCE_REASON_CODES = /* @__PURE__ */ new Set(["local_service.identity_mismatch"]);
|
|
13438
13630
|
function resolvePreExecutionNoExecutionEvidenceRootCause(trace) {
|
|
13439
13631
|
const headLifecycle = trace?.runtimeCoordinatorHeadLifecycle;
|
|
@@ -14168,7 +14360,9 @@ async function runPreparedComputerAuthHandoff(input) {
|
|
|
14168
14360
|
ownerUserId: initialSnapshot.ownerUserId
|
|
14169
14361
|
});
|
|
14170
14362
|
const currentSession = await resolveCurrentComputerSession(candidate);
|
|
14363
|
+
await assertReviewedComputerConnection(input.connectionIntent, candidate, currentSession);
|
|
14171
14364
|
if (!await confirmComputerAccountSwitch({
|
|
14365
|
+
reviewedConnection: Boolean(input.connectionIntent),
|
|
14172
14366
|
candidate,
|
|
14173
14367
|
currentSession,
|
|
14174
14368
|
interactive: input.interactive,
|
|
@@ -14247,6 +14441,13 @@ async function runPreparedComputerAuthHandoff(input) {
|
|
|
14247
14441
|
stream.close();
|
|
14248
14442
|
}
|
|
14249
14443
|
}
|
|
14444
|
+
async function assertReviewedComputerConnection(review, candidate, currentSession) {
|
|
14445
|
+
if (!review) return;
|
|
14446
|
+
const intent = computerConnectionIntentSchema.safeParse(review);
|
|
14447
|
+
if (intent.success && intent.data.expectedAccount === candidate.user.id && intent.data.previousSessionIdentity === buildStoredAuthSessionIdentity(currentSession)) return;
|
|
14448
|
+
const revoked = await revokePreparedAuthSession(candidate);
|
|
14449
|
+
throw new Error(`The computer sign-in changed. Review the connection again before continuing.${formatComputerAuthCleanupFailureSuffix(revoked)}`);
|
|
14450
|
+
}
|
|
14250
14451
|
async function assertPrepareSessionOwner(input) {
|
|
14251
14452
|
if (input.candidate.user.id === input.ownerUserId) return;
|
|
14252
14453
|
const revoked = await revokePreparedAuthSession(input.candidate);
|
|
@@ -14308,6 +14509,7 @@ async function confirmComputerAccountSwitch(input) {
|
|
|
14308
14509
|
throw new Error(`OpenMeld could not verify the account currently connected to this Computer. The current Computer connection was not changed.${formatComputerAuthCleanupFailureSuffix(revoked)}`);
|
|
14309
14510
|
}
|
|
14310
14511
|
if (currentUserId === input.candidate.user.id) return true;
|
|
14512
|
+
if (input.reviewedConnection) return true;
|
|
14311
14513
|
const currentAccount = normalizeOptionalString$7(input.currentSession?.user?.email) ?? "the current account";
|
|
14312
14514
|
const nextAccount = normalizeOptionalString$7(input.candidate.user.email) ?? "another account";
|
|
14313
14515
|
if (!input.interactive || input.resolvedView !== "human") {
|
|
@@ -14389,6 +14591,7 @@ async function runSetupLocalAgentConnection(input) {
|
|
|
14389
14591
|
if (input.humanProfile) throw new Error(RETIRED_HUMAN_PROFILE_SETUP_MESSAGE);
|
|
14390
14592
|
const deviceCode = normalizeOptionalString$6(input.deviceCode);
|
|
14391
14593
|
if (input.startSession && deviceCode) return buildPrepareSessionSetupResult(await runComputerAuthorizationHandoff({
|
|
14594
|
+
connectionIntent: input.connectionIntent,
|
|
14392
14595
|
deviceCode,
|
|
14393
14596
|
interactive,
|
|
14394
14597
|
localAgentSelection: resolvePrepareSessionLocalAgentSelection(input),
|
|
@@ -20457,6 +20660,34 @@ function normalizeOptionalString$2(value) {
|
|
|
20457
20660
|
return normalized.length > 0 ? normalized : null;
|
|
20458
20661
|
}
|
|
20459
20662
|
//#endregion
|
|
20663
|
+
//#region src/profile/execution-mode-command.ts
|
|
20664
|
+
async function runProfileExecutionMode(input) {
|
|
20665
|
+
if (input.mode !== void 0 && input.mode !== "parallel" && input.mode !== "serial") throw new Error("--mode must be parallel or serial.");
|
|
20666
|
+
const profile = await resolveOpenMeldProfile({
|
|
20667
|
+
openMeldProfileId: input.profile,
|
|
20668
|
+
profileKind: "agent"
|
|
20669
|
+
});
|
|
20670
|
+
if (!profile || profile.profileKind !== "agent") throw new Error("Choose an Agent Profile you own.");
|
|
20671
|
+
const runtime = await resolveRuntimeContext({ view: input.view });
|
|
20672
|
+
const presenter = createPresenter(runtime);
|
|
20673
|
+
const result = await createAgentProfileExecutionModeApi(createCliApiClientFoundation(await resolveBaseUrl())).readOrUpdate({
|
|
20674
|
+
agentProfileId: profile.openMeldProfileId,
|
|
20675
|
+
mode: input.mode,
|
|
20676
|
+
requestContext: buildOpenMeldRequestContextFromProfile({ openMeldProfile: profile })
|
|
20677
|
+
});
|
|
20678
|
+
if (runtime.resolvedView === "agent") {
|
|
20679
|
+
presenter.data({
|
|
20680
|
+
code: "profile.execution_mode",
|
|
20681
|
+
payload: result
|
|
20682
|
+
});
|
|
20683
|
+
return;
|
|
20684
|
+
}
|
|
20685
|
+
presenter.line({
|
|
20686
|
+
code: "profile.execution_mode",
|
|
20687
|
+
text: `${profile.profileName}: ${result.mode} admission; Context migration ${result.migration}. Existing tasks retain their execution and conversation identity.`
|
|
20688
|
+
});
|
|
20689
|
+
}
|
|
20690
|
+
//#endregion
|
|
20460
20691
|
//#region src/profile/profile-update-cli-options.ts
|
|
20461
20692
|
function hasExplicitProfileUpdateField(input) {
|
|
20462
20693
|
return typeof input.name === "string" || typeof input.agentController === "string" || typeof input.agentControllerConversationId === "string" || typeof input.agentControllerPermissionMode === "string" || typeof input.model === "string" || typeof input.reasoningEffort === "string" || typeof input.workspaceMode === "string" || typeof input.workspacePath === "string";
|
|
@@ -23123,7 +23354,8 @@ function recordDispatchSpaceReply(input) {
|
|
|
23123
23354
|
referenceTargetCount: input.referenceTargets?.length ?? 0,
|
|
23124
23355
|
wakeTargetCount: input.wakeTargets?.length ?? 0
|
|
23125
23356
|
});
|
|
23126
|
-
const
|
|
23357
|
+
const filePaths = input.filePaths ?? [];
|
|
23358
|
+
const context = filePaths.length > 0 ? readDispatchSpaceActionContextFromEnv() : readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23127
23359
|
timing.emit("context_ready", context);
|
|
23128
23360
|
assertAllowedAction(context, "post_message");
|
|
23129
23361
|
const text = normalizeRequiredText(input.text, "Reply message is required.");
|
|
@@ -23139,7 +23371,6 @@ function recordDispatchSpaceReply(input) {
|
|
|
23139
23371
|
mentionTargetCount: targetIds.mentionTargets.length,
|
|
23140
23372
|
referenceTargetCount: targetIds.referenceTargets.length
|
|
23141
23373
|
});
|
|
23142
|
-
const filePaths = input.filePaths ?? [];
|
|
23143
23374
|
if (filePaths.length === 0) return writeSpaceActionReplyRecord({
|
|
23144
23375
|
context,
|
|
23145
23376
|
files: [],
|
|
@@ -23207,7 +23438,7 @@ async function uploadSpaceActionReplyFiles(input) {
|
|
|
23207
23438
|
});
|
|
23208
23439
|
}
|
|
23209
23440
|
function runSpaceActionWake(input) {
|
|
23210
|
-
const context =
|
|
23441
|
+
const context = readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23211
23442
|
assertAllowedAction(context, "post_message");
|
|
23212
23443
|
const text = normalizeRequiredJoinedText(input.messageParts, "Wake handoff message is required.");
|
|
23213
23444
|
recordAction({
|
|
@@ -23236,7 +23467,7 @@ function runSpaceActionStatus(input) {
|
|
|
23236
23467
|
}));
|
|
23237
23468
|
}
|
|
23238
23469
|
function recordDispatchSpaceStatus(input) {
|
|
23239
|
-
const context =
|
|
23470
|
+
const context = readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23240
23471
|
assertAllowedAction(context, "post_status");
|
|
23241
23472
|
return recordAction({
|
|
23242
23473
|
action: {
|
|
@@ -23252,7 +23483,7 @@ function runSpaceActionSilent(input) {
|
|
|
23252
23483
|
emitActionRecorded(recordDispatchSpaceSilent(input));
|
|
23253
23484
|
}
|
|
23254
23485
|
function recordDispatchSpaceSilent(input) {
|
|
23255
|
-
const context =
|
|
23486
|
+
const context = readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23256
23487
|
assertAllowedAction(context, "stay_silent");
|
|
23257
23488
|
return recordAction({
|
|
23258
23489
|
action: {
|
|
@@ -23478,6 +23709,45 @@ async function readDispatchSpaceFile(input) {
|
|
|
23478
23709
|
return result;
|
|
23479
23710
|
}
|
|
23480
23711
|
//#endregion
|
|
23712
|
+
//#region src/space/dispatch-history-read.ts
|
|
23713
|
+
/** Read the current Wake's bounded Space history through the existing member API. */
|
|
23714
|
+
async function readDispatchSpaceHistory() {
|
|
23715
|
+
if (process.env["OPENMELD_DISPATCH_RUNTIME_MODE"] !== "dispatch-owned-runtime") throw new Error("Space history tools require an active OpenMeld dispatch runtime.");
|
|
23716
|
+
const context = readDispatchSpaceActionContextFromEnv();
|
|
23717
|
+
const profile = await requireOpenMeldProfile({
|
|
23718
|
+
openMeldProfileId: context.targetProfileId,
|
|
23719
|
+
persistSelection: false,
|
|
23720
|
+
authAction: "reading the current Wake's Space history"
|
|
23721
|
+
});
|
|
23722
|
+
if (profile.openMeldProfileId !== context.targetProfileId || profile.profileKind !== "agent") throw new Error("The Space history reader does not match the current Agent.");
|
|
23723
|
+
const result = await createCliSpaceApi(await resolveBaseUrl()).listSignals({
|
|
23724
|
+
spaceId: context.spaceId,
|
|
23725
|
+
requestContext: buildOpenMeldRequestContextFromProfile({ openMeldProfile: profile }),
|
|
23726
|
+
query: {
|
|
23727
|
+
aroundSignalId: context.sourceEventId,
|
|
23728
|
+
beforeCount: 20,
|
|
23729
|
+
afterCount: 0,
|
|
23730
|
+
kinds: ["text"]
|
|
23731
|
+
}
|
|
23732
|
+
});
|
|
23733
|
+
const current = readDispatchSpaceActionContextFromEnv();
|
|
23734
|
+
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.");
|
|
23735
|
+
const output = dispatchSpaceHistoryResultSchema.parse({
|
|
23736
|
+
spaceId: context.spaceId,
|
|
23737
|
+
sourceSignalId: context.sourceEventId,
|
|
23738
|
+
beforeCount: 20,
|
|
23739
|
+
afterCount: 0,
|
|
23740
|
+
signals: result.signals,
|
|
23741
|
+
nextCursor: result.nextCursor
|
|
23742
|
+
});
|
|
23743
|
+
const signals = output.signals.map((signal) => signalTextEnvelopeSchema.parse(signal));
|
|
23744
|
+
if (signals.some((signal) => signal.spaceId !== context.spaceId)) throw new Error("The Space history response does not match the current Space.");
|
|
23745
|
+
return {
|
|
23746
|
+
...output,
|
|
23747
|
+
signals
|
|
23748
|
+
};
|
|
23749
|
+
}
|
|
23750
|
+
//#endregion
|
|
23481
23751
|
//#region src/space/action-mcp-server.ts
|
|
23482
23752
|
const FINAL_STATUS_SCHEMA = z.enum([
|
|
23483
23753
|
"done",
|
|
@@ -23489,7 +23759,38 @@ function createSpaceActionMcpServer() {
|
|
|
23489
23759
|
const server = new McpServer({
|
|
23490
23760
|
name: "openmeld-dispatch-space-action",
|
|
23491
23761
|
version: "1.0.0"
|
|
23492
|
-
}, { instructions: "Use read_file
|
|
23762
|
+
}, { instructions: "Use read_history for the bounded text history around the current Wake, and read_file for shared text files in the current Space. 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." });
|
|
23763
|
+
server.registerTool("read_history", {
|
|
23764
|
+
title: "Read the current Wake's Space history",
|
|
23765
|
+
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.",
|
|
23766
|
+
inputSchema: dispatchSpaceHistoryRequestSchema,
|
|
23767
|
+
outputSchema: dispatchSpaceHistoryResultSchema,
|
|
23768
|
+
annotations: {
|
|
23769
|
+
readOnlyHint: true,
|
|
23770
|
+
destructiveHint: false,
|
|
23771
|
+
idempotentHint: true,
|
|
23772
|
+
openWorldHint: false
|
|
23773
|
+
}
|
|
23774
|
+
}, async () => {
|
|
23775
|
+
try {
|
|
23776
|
+
const result = await readDispatchSpaceHistory();
|
|
23777
|
+
return {
|
|
23778
|
+
structuredContent: result,
|
|
23779
|
+
content: [{
|
|
23780
|
+
type: "text",
|
|
23781
|
+
text: JSON.stringify(result)
|
|
23782
|
+
}]
|
|
23783
|
+
};
|
|
23784
|
+
} catch (error) {
|
|
23785
|
+
return {
|
|
23786
|
+
isError: true,
|
|
23787
|
+
content: [{
|
|
23788
|
+
type: "text",
|
|
23789
|
+
text: error instanceof Error ? error.message : String(error)
|
|
23790
|
+
}]
|
|
23791
|
+
};
|
|
23792
|
+
}
|
|
23793
|
+
});
|
|
23493
23794
|
server.registerTool("read_file", {
|
|
23494
23795
|
title: "Read a file in the current OpenMeld Space",
|
|
23495
23796
|
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.",
|
|
@@ -23529,6 +23830,7 @@ function createSpaceActionMcpServer() {
|
|
|
23529
23830
|
referenceTargets: z.array(z.string().min(1)).optional(),
|
|
23530
23831
|
wakeTargets: z.array(z.string().min(1)).optional()
|
|
23531
23832
|
},
|
|
23833
|
+
outputSchema: dispatchSpaceActionToolResultSchema,
|
|
23532
23834
|
annotations: {
|
|
23533
23835
|
destructiveHint: false,
|
|
23534
23836
|
idempotentHint: false,
|
|
@@ -23548,6 +23850,7 @@ function createSpaceActionMcpServer() {
|
|
|
23548
23850
|
status: FINAL_STATUS_SCHEMA,
|
|
23549
23851
|
text: z.string().min(1)
|
|
23550
23852
|
},
|
|
23853
|
+
outputSchema: dispatchSpaceActionToolResultSchema,
|
|
23551
23854
|
annotations: {
|
|
23552
23855
|
destructiveHint: false,
|
|
23553
23856
|
idempotentHint: false,
|
|
@@ -23562,6 +23865,7 @@ function createSpaceActionMcpServer() {
|
|
|
23562
23865
|
title: "Stay silent in the current OpenMeld Space",
|
|
23563
23866
|
description: "Record that the active OpenMeld Wake intentionally needs no public reply. Use this only after deciding that silence is the correct final outcome.",
|
|
23564
23867
|
inputSchema: { reason: z.string().min(1) },
|
|
23868
|
+
outputSchema: dispatchSpaceActionToolResultSchema,
|
|
23565
23869
|
annotations: {
|
|
23566
23870
|
destructiveHint: false,
|
|
23567
23871
|
idempotentHint: false,
|
|
@@ -23572,20 +23876,56 @@ function createSpaceActionMcpServer() {
|
|
|
23572
23876
|
return server;
|
|
23573
23877
|
}
|
|
23574
23878
|
async function runSpaceActionMcpServer() {
|
|
23575
|
-
|
|
23879
|
+
readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23576
23880
|
await createSpaceActionMcpServer().connect(new StdioServerTransport());
|
|
23577
23881
|
}
|
|
23578
23882
|
async function executeSpaceAction(action) {
|
|
23579
23883
|
try {
|
|
23580
|
-
|
|
23581
|
-
|
|
23582
|
-
|
|
23583
|
-
|
|
23884
|
+
const context = readDispatchSpaceActionContextForReceiptFromEnv();
|
|
23885
|
+
const record = await action();
|
|
23886
|
+
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.");
|
|
23887
|
+
const contextState = Date.now() > context.expiresAtMs ? "expired" : "active";
|
|
23888
|
+
return {
|
|
23889
|
+
structuredContent: dispatchSpaceActionToolResultSchema.parse({ receipt: {
|
|
23890
|
+
status: "proposal_saved_locally",
|
|
23891
|
+
actionType: record.action.type,
|
|
23892
|
+
attemptId: context.attemptId,
|
|
23893
|
+
contextId: context.contextId,
|
|
23894
|
+
dispatchId: context.dispatchId,
|
|
23895
|
+
recordedAtMs: record.createdAtMs,
|
|
23896
|
+
contextState,
|
|
23897
|
+
coordinatorAcceptance: "unconfirmed",
|
|
23898
|
+
publication: "unconfirmed"
|
|
23899
|
+
} }),
|
|
23900
|
+
content: [{
|
|
23901
|
+
type: "text",
|
|
23902
|
+
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.`
|
|
23903
|
+
}]
|
|
23904
|
+
};
|
|
23584
23905
|
} catch (error) {
|
|
23906
|
+
if (error instanceof DispatchSpaceActionClosedError) return {
|
|
23907
|
+
structuredContent: dispatchSpaceActionToolResultSchema.parse({ receipt: {
|
|
23908
|
+
status: "rejected_closed",
|
|
23909
|
+
reasonCode: error.reasonCode,
|
|
23910
|
+
coordinatorAcceptance: "unconfirmed",
|
|
23911
|
+
publication: "unconfirmed"
|
|
23912
|
+
} }),
|
|
23913
|
+
content: [{
|
|
23914
|
+
type: "text",
|
|
23915
|
+
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.`
|
|
23916
|
+
}],
|
|
23917
|
+
isError: true
|
|
23918
|
+
};
|
|
23585
23919
|
return {
|
|
23920
|
+
structuredContent: dispatchSpaceActionToolResultSchema.parse({ receipt: {
|
|
23921
|
+
status: "outcome_unknown",
|
|
23922
|
+
reasonCode: "space_action.recording_outcome_unknown",
|
|
23923
|
+
coordinatorAcceptance: "unconfirmed",
|
|
23924
|
+
publication: "unconfirmed"
|
|
23925
|
+
} }),
|
|
23586
23926
|
content: [{
|
|
23587
23927
|
type: "text",
|
|
23588
|
-
text: error instanceof Error ? error.message : String(error)
|
|
23928
|
+
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.`
|
|
23589
23929
|
}],
|
|
23590
23930
|
isError: true
|
|
23591
23931
|
};
|
|
@@ -24213,7 +24553,7 @@ function normalizeOptionalString(value) {
|
|
|
24213
24553
|
return normalized.length > 0 ? normalized : null;
|
|
24214
24554
|
}
|
|
24215
24555
|
async function runDefaultSpaceAddMeMembership(input) {
|
|
24216
|
-
const { runSpaceAddMeMembership } = await import("./add-me-membership-
|
|
24556
|
+
const { runSpaceAddMeMembership } = await import("./add-me-membership-CZS8PbYL.js");
|
|
24217
24557
|
return await runSpaceAddMeMembership(input);
|
|
24218
24558
|
}
|
|
24219
24559
|
//#endregion
|
|
@@ -28265,18 +28605,21 @@ withStartOptions(program.command("start").description("Initial onboarding: set u
|
|
|
28265
28605
|
}
|
|
28266
28606
|
});
|
|
28267
28607
|
});
|
|
28268
|
-
program.command("setup").description("Set up this computer for OpenMeld Space Wake.").option("--profile <id>", "Existing OpenMeld agent profile ID to connect to this computer").option("--agent <id...>", "Builtin local agent ID to repair directly when you already know the target").option("--human-profile <id>", "Retired OpenMeld Web setup flag; copy a fresh setup command from OpenMeld Web instead").option("--ott <token>", "One-time token to sign in on this device before setup").option("--device-code <code>", "Browser-approved code used to create this computer's independent sign-in session").option("--start-session <opaque-token>", "Continue an OpenMeld Web Prepare setup command on this device").option("--local-agents <mode>", "Select local agents during setup: all or none").option("--local-agent <id...>", "Select specific local agent IDs during setup").option("--reset-this-computer", "Stop stale local OpenMeld Service state before reconnecting this computer").addHelpText("after", buildCommandHelpExamples("Primary entry points", [
|
|
28608
|
+
program.command("setup").description("Set up this computer for OpenMeld Space Wake.").option("--connection-intent <json>", "Account and exact previous Computer session explicitly reviewed for this connection").option("--profile <id>", "Existing OpenMeld agent profile ID to connect to this computer").option("--agent <id...>", "Builtin local agent ID to repair directly when you already know the target").option("--human-profile <id>", "Retired OpenMeld Web setup flag; copy a fresh setup command from OpenMeld Web instead").option("--ott <token>", "One-time token to sign in on this device before setup").option("--device-code <code>", "Browser-approved code used to create this computer's independent sign-in session").option("--start-session <opaque-token>", "Continue an OpenMeld Web Prepare setup command on this device").option("--local-agents <mode>", "Select local agents during setup: all or none").option("--local-agent <id...>", "Select specific local agent IDs during setup").option("--reset-this-computer", "Stop stale local OpenMeld Service state before reconnecting this computer").addHelpText("after", buildCommandHelpExamples("Primary entry points", [
|
|
28269
28609
|
"openmeld setup",
|
|
28270
28610
|
"openmeld setup --start-session <opaque-token> --local-agents all",
|
|
28271
28611
|
"openmeld setup --profile <agent-profile-id> --local-agent <local-agent-id>"
|
|
28272
28612
|
])).action(async (opts) => {
|
|
28273
28613
|
const view = getGlobalViewOption();
|
|
28614
|
+
const connectionIntent = opts.connectionIntent ? computerConnectionIntentSchema.parse(JSON.parse(opts.connectionIntent)) : void 0;
|
|
28615
|
+
if (connectionIntent && !(opts.startSession && opts.deviceCode)) throw new Error("--connection-intent requires --start-session and --device-code.");
|
|
28274
28616
|
await runCommandWithEntryChecks({
|
|
28275
28617
|
routeTokens: ["setup"],
|
|
28276
28618
|
view,
|
|
28277
28619
|
profile: opts.profile,
|
|
28278
28620
|
run: async () => {
|
|
28279
28621
|
await runSetup({
|
|
28622
|
+
connectionIntent,
|
|
28280
28623
|
agent: opts.agent,
|
|
28281
28624
|
deviceCode: opts.deviceCode,
|
|
28282
28625
|
humanProfile: opts.humanProfile,
|
|
@@ -29329,8 +29672,8 @@ const serviceCmd = program.command("service").alias("daemon").description("Manag
|
|
|
29329
29672
|
}
|
|
29330
29673
|
});
|
|
29331
29674
|
});
|
|
29332
|
-
serviceCmd.command("start").description("Start OpenMeld Service on this device.").option("--mode <mode>", "Start mode: background (default) or foreground").option("--gateway-url <url>", "OpenMeld gateway URL (command line, OPENMELD_GATEWAY_URL, or saved OpenMeld settings)").option("--profile <id-or-name>", "Optional OpenMeld profile override used for owner resolution").option("--device-id <id>", "Override daemon device id for this run").option("--heartbeat-ms <n>", "Heartbeat interval in milliseconds (default: 25000)").option("--json", "Print machine-readable JSON.", false).action(runServiceStartCliAction);
|
|
29333
|
-
serviceCmd.command("run", { hidden: true }).description("Run OpenMeld Service in this process. System service entrypoint (launchd/systemd unit definitions call this); humans should use `openmeld service start`.").option("--mode <mode>", "Run mode: background (default) or foreground").option("--gateway-url <url>", "OpenMeld gateway URL (command line, OPENMELD_GATEWAY_URL, or saved OpenMeld settings)").option("--profile <id-or-name>", "Optional OpenMeld profile override used for owner resolution").option("--device-id <id>", "Override daemon device id for this run").option("--heartbeat-ms <n>", "Heartbeat interval in milliseconds (default: 25000)").action(runServiceStartCliAction);
|
|
29675
|
+
serviceCmd.command("start").description("Start OpenMeld Service on this device.").option("--expected-account <id>", "Require this signed-in account for Service control").option("--mode <mode>", "Start mode: background (default) or foreground").option("--gateway-url <url>", "OpenMeld gateway URL (command line, OPENMELD_GATEWAY_URL, or saved OpenMeld settings)").option("--profile <id-or-name>", "Optional OpenMeld profile override used for owner resolution").option("--device-id <id>", "Override daemon device id for this run").option("--heartbeat-ms <n>", "Heartbeat interval in milliseconds (default: 25000)").option("--json", "Print machine-readable JSON.", false).action(async (opts) => await runServiceStartCliAction(opts));
|
|
29676
|
+
serviceCmd.command("run", { hidden: true }).option("--account-admission-id <id>", "CLI-owned Service startup admission").description("Run OpenMeld Service in this process. System service entrypoint (launchd/systemd unit definitions call this); humans should use `openmeld service start`.").option("--mode <mode>", "Run mode: background (default) or foreground").option("--gateway-url <url>", "OpenMeld gateway URL (command line, OPENMELD_GATEWAY_URL, or saved OpenMeld settings)").option("--profile <id-or-name>", "Optional OpenMeld profile override used for owner resolution").option("--device-id <id>", "Override daemon device id for this run").option("--heartbeat-ms <n>", "Heartbeat interval in milliseconds (default: 25000)").action(async (opts) => await runServiceStartCliAction(opts));
|
|
29334
29677
|
serviceCmd.command("update-worker", { hidden: true }).description("Resume one durable OpenMeld Service update in the background.").action(async () => {
|
|
29335
29678
|
const result = await runPendingDaemonServiceUpdate();
|
|
29336
29679
|
if (result?.phase === "restored" || result?.phase === "needs_help") process.exitCode = 1;
|
|
@@ -29512,7 +29855,15 @@ serviceCmd.command("reinstall", { hidden: true }).description("Deprecated alias
|
|
|
29512
29855
|
errLine("hint: `openmeld service reinstall` is a deprecated alias; use `openmeld service repair`.");
|
|
29513
29856
|
await runServiceMaintenanceCliAction(opts, "repair");
|
|
29514
29857
|
});
|
|
29515
|
-
serviceCmd.command("stop").description("Stop OpenMeld Service on this device.").option("--force", "Send SIGKILL immediately instead of SIGTERM (human flow defaults to confirmation)").option("--profile <id-or-name>", "Optional OpenMeld profile override used for state sync").option("--json", "Print machine-readable JSON.", false).action(async (opts) => {
|
|
29858
|
+
serviceCmd.command("stop").description("Stop OpenMeld Service on this device.").option("--expected-account <id>", "Require this signed-in account for Service control").option("--force", "Send SIGKILL immediately instead of SIGTERM (human flow defaults to confirmation)").option("--profile <id-or-name>", "Optional OpenMeld profile override used for state sync").option("--json", "Print machine-readable JSON.", false).action(async (opts) => {
|
|
29859
|
+
if (opts.expectedAccount !== void 0) {
|
|
29860
|
+
if (!opts.json || opts.force || opts.profile) throw new Error("Account-bound Service control requires --json and does not accept force or profile overrides.");
|
|
29861
|
+
await runServiceAccountControl({
|
|
29862
|
+
operation: "stop",
|
|
29863
|
+
expectedAccount: opts.expectedAccount
|
|
29864
|
+
});
|
|
29865
|
+
return;
|
|
29866
|
+
}
|
|
29516
29867
|
const json = opts.json === true;
|
|
29517
29868
|
const view = getGlobalViewOption();
|
|
29518
29869
|
await runCommandWithEntryChecks({
|
|
@@ -29530,6 +29881,25 @@ serviceCmd.command("stop").description("Stop OpenMeld Service on this device.").
|
|
|
29530
29881
|
});
|
|
29531
29882
|
});
|
|
29532
29883
|
async function runServiceStartCliAction(opts) {
|
|
29884
|
+
if (opts.expectedAccount !== void 0) {
|
|
29885
|
+
if (!opts.json || opts.profile || opts.deviceId || opts.gatewayUrl || opts.heartbeatMs || opts.mode) throw new Error("Account-bound Service control requires --json and does not accept startup overrides.");
|
|
29886
|
+
await runServiceAccountControl({
|
|
29887
|
+
operation: "start",
|
|
29888
|
+
expectedAccount: opts.expectedAccount
|
|
29889
|
+
});
|
|
29890
|
+
emitCliJsonEnvelope({
|
|
29891
|
+
schemaVersion: 1,
|
|
29892
|
+
type: "daemon.run",
|
|
29893
|
+
ok: true,
|
|
29894
|
+
reason: "started"
|
|
29895
|
+
});
|
|
29896
|
+
return;
|
|
29897
|
+
}
|
|
29898
|
+
if (opts.accountAdmissionId) {
|
|
29899
|
+
const { accountAdmissionId, ...remaining } = opts;
|
|
29900
|
+
await runServiceAccountCarrier(accountAdmissionId, async () => await runServiceStartCliAction(remaining));
|
|
29901
|
+
return;
|
|
29902
|
+
}
|
|
29533
29903
|
const json = opts.json === true;
|
|
29534
29904
|
const view = getGlobalViewOption();
|
|
29535
29905
|
if (!json && shouldEmitAgentOverview({ resolvedView: view === "agent" ? "agent" : "human" })) emitDaemonAgentOverview({
|
|
@@ -30052,7 +30422,7 @@ withSpaceProfileOption(spaceCmd.command("watch").description("Watch a space in r
|
|
|
30052
30422
|
}
|
|
30053
30423
|
});
|
|
30054
30424
|
});
|
|
30055
|
-
withSpaceProfileOption(spaceCmd.command("send").description("Send one message to a Space.").argument("[space]", "Space ID (64-character hex)").argument("[text...]", "Text to send").option("--file <path>", "Share a local file in this Space message (repeatable, max 10)", collectRepeatedOptionValue, []).option("--stdin", "Read message text from stdin (EOF to finish)", false).option("--text-file <path>", "Read message text from a UTF-8 file").option("--wake <profile-id>", "Wake an Agent Profile (repeatable)", collectRepeatedOptionValue, []).option("--reference <profile-id>", "Reference an Agent Profile (repeatable)", collectRepeatedOptionValue, []).option("--mention <profile-id>", "Mention a Human Profile (repeatable)", collectRepeatedOptionValue, []).option("--plain", "Assert that this message has no recipients; text is always literal", false).option("--reply-to <signal-id>", "Reply into the thread of a message (creates the thread if it does not exist yet)").option("--password <value>", "Space password for protected access")).action(async (space, textParts, opts, command) => {
|
|
30425
|
+
withSpaceProfileOption(spaceCmd.command("send").description("Send one message to a Space.").option("--new-task", `Start an independent task (up to 5 per Agent)`).option("--fork-from <signal-id>", "Fork the selected Agent's completed task at this message").option("--continue-from <signal-id>", "Continue the selected Agent's task from this message").option("--task-access <mode>", "File access: space_context, read_only, or workspace (local files require Codex)").option("--task-workspace <mode>", "Task folder: isolated (private project worktree for local work) or current").argument("[space]", "Space ID (64-character hex)").argument("[text...]", "Text to send").option("--file <path>", "Share a local file in this Space message (repeatable, max 10)", collectRepeatedOptionValue, []).option("--stdin", "Read message text from stdin (EOF to finish)", false).option("--text-file <path>", "Read message text from a UTF-8 file").option("--wake <profile-id>", "Wake an Agent Profile (repeatable)", collectRepeatedOptionValue, []).option("--reference <profile-id>", "Reference an Agent Profile (repeatable)", collectRepeatedOptionValue, []).option("--mention <profile-id>", "Mention a Human Profile (repeatable)", collectRepeatedOptionValue, []).option("--plain", "Assert that this message has no recipients; text is always literal", false).option("--reply-to <signal-id>", "Reply into the thread of a message (creates the thread if it does not exist yet)").option("--password <value>", "Space password for protected access")).action(async (space, textParts, opts, command) => {
|
|
30056
30426
|
const cliOptions = resolveSpaceCommandCliOptions(command, opts);
|
|
30057
30427
|
const spaceValue = String(space ?? "").trim();
|
|
30058
30428
|
const outputView = await resolveEffectiveViewForOutput();
|
|
@@ -30073,6 +30443,15 @@ withSpaceProfileOption(spaceCmd.command("send").description("Send one message to
|
|
|
30073
30443
|
baseUrl: cliOptions.gatewayUrl,
|
|
30074
30444
|
space: spaceValue,
|
|
30075
30445
|
filePaths: Array.isArray(opts.file) ? opts.file.map(String) : [],
|
|
30446
|
+
contextSelection: resolveSpaceTaskSelection({
|
|
30447
|
+
space: spaceValue,
|
|
30448
|
+
wakeTargets: opts.wake,
|
|
30449
|
+
newTask: opts.newTask,
|
|
30450
|
+
forkFrom: opts.forkFrom,
|
|
30451
|
+
continueFrom: opts.continueFrom,
|
|
30452
|
+
taskAccess: opts.taskAccess,
|
|
30453
|
+
taskWorkspace: opts.taskWorkspace
|
|
30454
|
+
}),
|
|
30076
30455
|
password: cliOptions.password,
|
|
30077
30456
|
text: textValue,
|
|
30078
30457
|
stdin: Boolean(opts.stdin),
|
|
@@ -30495,7 +30874,7 @@ withSpaceProfileOption(spaceCmd.command("password").description("Set, change, or
|
|
|
30495
30874
|
}
|
|
30496
30875
|
});
|
|
30497
30876
|
});
|
|
30498
|
-
program.command("send").description("Alias for `openmeld space send`.").argument("[text...]", "Text to send").option("--profile <id>", "OpenMeld profile ID").option("--base-url <url>", "OpenMeld gateway URL").option("--space <space>", "Space ID (64-character hex)").option("--stdin", "Read message text from stdin (EOF to finish)", false).option("--file <path>", "Share a local file in this Space message (repeatable, max 10)", collectRepeatedOptionValue, []).option("--text-file <path>", "Read message text from a UTF-8 file").option("--wake <profile-id>", "Wake an Agent Profile (repeatable)", collectRepeatedOptionValue, []).option("--reference <profile-id>", "Reference an Agent Profile (repeatable)", collectRepeatedOptionValue, []).option("--mention <profile-id>", "Mention a Human Profile (repeatable)", collectRepeatedOptionValue, []).option("--plain", "Assert that this message has no recipients; text is always literal", false).option("--password <value>", "Space password for protected access").action(async (textParts, opts) => {
|
|
30877
|
+
program.command("send").description("Alias for `openmeld space send`.").option("--new-task", `Start an independent task (up to 5 per Agent)`).option("--fork-from <signal-id>", "Fork the selected Agent's completed task at this message").option("--continue-from <signal-id>", "Continue the selected Agent's task from this message").option("--task-access <mode>", "File access: space_context, read_only, or workspace (local files require Codex)").option("--task-workspace <mode>", "Task folder: isolated (private project worktree for local work) or current").argument("[text...]", "Text to send").option("--profile <id>", "OpenMeld profile ID").option("--base-url <url>", "OpenMeld gateway URL").option("--space <space>", "Space ID (64-character hex)").option("--stdin", "Read message text from stdin (EOF to finish)", false).option("--file <path>", "Share a local file in this Space message (repeatable, max 10)", collectRepeatedOptionValue, []).option("--text-file <path>", "Read message text from a UTF-8 file").option("--wake <profile-id>", "Wake an Agent Profile (repeatable)", collectRepeatedOptionValue, []).option("--reference <profile-id>", "Reference an Agent Profile (repeatable)", collectRepeatedOptionValue, []).option("--mention <profile-id>", "Mention a Human Profile (repeatable)", collectRepeatedOptionValue, []).option("--plain", "Assert that this message has no recipients; text is always literal", false).option("--password <value>", "Space password for protected access").action(async (textParts, opts) => {
|
|
30499
30878
|
const space = String(opts.space ?? "").trim();
|
|
30500
30879
|
if (!space) throw createSpaceAliasTargetGuideError("send");
|
|
30501
30880
|
const view = getGlobalViewOption();
|
|
@@ -30507,6 +30886,15 @@ program.command("send").description("Alias for `openmeld space send`.").argument
|
|
|
30507
30886
|
run: async () => {
|
|
30508
30887
|
await runSpaceSend({
|
|
30509
30888
|
profile: opts.profile,
|
|
30889
|
+
contextSelection: resolveSpaceTaskSelection({
|
|
30890
|
+
space,
|
|
30891
|
+
wakeTargets: opts.wake,
|
|
30892
|
+
newTask: opts.newTask,
|
|
30893
|
+
forkFrom: opts.forkFrom,
|
|
30894
|
+
continueFrom: opts.continueFrom,
|
|
30895
|
+
taskAccess: opts.taskAccess,
|
|
30896
|
+
taskWorkspace: opts.taskWorkspace
|
|
30897
|
+
}),
|
|
30510
30898
|
baseUrl: opts.baseUrl,
|
|
30511
30899
|
space,
|
|
30512
30900
|
password: opts.password,
|
|
@@ -30682,6 +31070,18 @@ program.command("whoami").description("Show your sign-in and selected profile.")
|
|
|
30682
31070
|
});
|
|
30683
31071
|
});
|
|
30684
31072
|
const profileCmd = program.command("profiles").alias("profile").description("Manage OpenMeld profiles.");
|
|
31073
|
+
profileCmd.command("execution-mode").description("Read or change independent-task admission for an Agent Profile.").argument("<profile>", "Agent Profile ID").option("--mode <mode>", "parallel or serial; serial lets existing tasks finish").action(async (profile, options) => {
|
|
31074
|
+
const view = getGlobalViewOption();
|
|
31075
|
+
await runCommandWithEntryChecks({
|
|
31076
|
+
routeTokens: ["profile", "execution-mode"],
|
|
31077
|
+
view,
|
|
31078
|
+
run: () => runProfileExecutionMode({
|
|
31079
|
+
profile,
|
|
31080
|
+
mode: options.mode,
|
|
31081
|
+
view
|
|
31082
|
+
})
|
|
31083
|
+
});
|
|
31084
|
+
});
|
|
30685
31085
|
profileCmd.action(async () => {
|
|
30686
31086
|
const view = getGlobalViewOption();
|
|
30687
31087
|
await runCommandWithEntryChecks({
|
|
@@ -31043,6 +31443,33 @@ async function handlePreParseStandaloneCommand(argv) {
|
|
|
31043
31443
|
async function main() {
|
|
31044
31444
|
if (await runMacOsNativeKeychainHelperIfRequested()) return;
|
|
31045
31445
|
const argv = process.argv.map((arg) => arg === "--h" ? "--help" : arg);
|
|
31446
|
+
if (argv.length === 5 && argv[2] === "computer" && argv[3] === "connection-review" && argv[4] === "--json") {
|
|
31447
|
+
const { readComputerConnectionReview } = await import("./computer-connection-review-Dx4svB-T.js");
|
|
31448
|
+
outLine(JSON.stringify(await readComputerConnectionReview()));
|
|
31449
|
+
return;
|
|
31450
|
+
}
|
|
31451
|
+
if (argv.length === 5 && argv[2] === "service" && argv[4] === "--json") {
|
|
31452
|
+
if (argv[3] === "control-carrier-capability") {
|
|
31453
|
+
outLine(JSON.stringify({
|
|
31454
|
+
protocol: "account-checked-service-control-v1",
|
|
31455
|
+
executable: process.execPath
|
|
31456
|
+
}));
|
|
31457
|
+
return;
|
|
31458
|
+
}
|
|
31459
|
+
if (argv[3] === "control-capabilities") {
|
|
31460
|
+
const { readServiceControlCapabilities } = await import("./service-control-capabilities-BqEr7J9H.js");
|
|
31461
|
+
emitCliJsonEnvelope({
|
|
31462
|
+
schemaVersion: 1,
|
|
31463
|
+
type: "service.control_capabilities",
|
|
31464
|
+
...await readServiceControlCapabilities().catch(() => ({
|
|
31465
|
+
deviceId: null,
|
|
31466
|
+
start: false,
|
|
31467
|
+
stop: false
|
|
31468
|
+
}))
|
|
31469
|
+
});
|
|
31470
|
+
return;
|
|
31471
|
+
}
|
|
31472
|
+
}
|
|
31046
31473
|
if (isDispatchSpaceActionToolServerArgv(argv)) {
|
|
31047
31474
|
await runSpaceActionMcpServer();
|
|
31048
31475
|
return;
|
|
@@ -31213,4 +31640,4 @@ main().catch((error) => {
|
|
|
31213
31640
|
//#endregion
|
|
31214
31641
|
export {};
|
|
31215
31642
|
|
|
31216
|
-
//# sourceMappingURL=openmeld-
|
|
31643
|
+
//# sourceMappingURL=openmeld-DQNVH1jx.js.map
|