@adhdev/mesh-shared 1.0.82-rc.36 → 1.0.82-rc.38

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/index.mjs CHANGED
@@ -755,6 +755,7 @@ var CANONICAL_MESH_TOOL_NAMES = [
755
755
  "mesh_enqueue_task",
756
756
  "mesh_view_queue",
757
757
  "mesh_queue_cancel",
758
+ "mesh_direct_cancel",
758
759
  "mesh_queue_requeue",
759
760
  "mesh_queue_revise",
760
761
  "mesh_send_task",
@@ -777,6 +778,7 @@ var CANONICAL_MESH_TOOL_NAMES = [
777
778
  "mesh_attach_remote",
778
779
  "mesh_clone_node",
779
780
  "mesh_remove_node",
781
+ "mesh_retry_node_bootstrap",
780
782
  "mesh_cleanup_worktree_nodes",
781
783
  "mesh_refine_node",
782
784
  "mesh_refine_batch",
@@ -793,6 +795,12 @@ var CANONICAL_MESH_TOOL_NAMES = [
793
795
  "mesh_reconcile_ledger",
794
796
  "mesh_mission_upsert",
795
797
  "mesh_mission_list",
798
+ "mesh_mission_git_eval",
799
+ "mesh_release_upsert",
800
+ "mesh_release_scope",
801
+ "mesh_release_list",
802
+ "mesh_release_record_deploy",
803
+ "mesh_release_changelog_draft",
796
804
  "mesh_review_inbox",
797
805
  "mesh_node_slots",
798
806
  "driver_list",
@@ -1797,6 +1805,7 @@ var ASSISTANT_TOOLS = [
1797
1805
  "project_attach_remote",
1798
1806
  "discover_repos",
1799
1807
  "memory",
1808
+ "memory_search",
1800
1809
  "skill_view",
1801
1810
  "skill_manage",
1802
1811
  "project_note",
@@ -1807,7 +1816,8 @@ var ASSISTANT_TOOLS = [
1807
1816
  "artifact_list",
1808
1817
  "artifact_read",
1809
1818
  "decision_answer",
1810
- "decision_request"
1819
+ "decision_request",
1820
+ "session_control"
1811
1821
  ];
1812
1822
  var ASSISTANT_TOOL_SET = new Set(ASSISTANT_TOOLS);
1813
1823
  function isAssistantTool(value) {
@@ -1830,6 +1840,8 @@ var ASSISTANT_VERB = {
1830
1840
  projectAttachRemote: "assistant_project_attach_remote",
1831
1841
  discoverRepos: "assistant_discover_repos",
1832
1842
  memory: "assistant_memory",
1843
+ /** Pull-only FTS search over the archive tier (memory design 2026-11-01 §3.4). */
1844
+ memorySearch: "assistant_memory_search",
1833
1845
  skillView: "assistant_skill_view",
1834
1846
  skillManage: "assistant_skill_manage",
1835
1847
  projectNote: "assistant_project_note",
@@ -1841,6 +1853,8 @@ var ASSISTANT_VERB = {
1841
1853
  decisionAnswer: "assistant_decision_answer",
1842
1854
  /** Register a plain-text question a coordinator put to the owner as a decision item (§5.2). */
1843
1855
  decisionRequest: "assistant_decision_request",
1856
+ /** Stop / restart / switch the provider of a coordinator, worker or the assistant session (handoff design 2026-11-01 §4). */
1857
+ sessionControl: "assistant_session_control",
1844
1858
  // assistant-side daemon verbs without a tool of the same name
1845
1859
  launch: "launch_assistant",
1846
1860
  pendingRelays: "assistant_pending_relays",
@@ -1848,6 +1862,12 @@ var ASSISTANT_VERB = {
1848
1862
  stagedResolve: "assistant_staged_resolve",
1849
1863
  storeAdmin: "assistant_store_admin",
1850
1864
  importSkills: "assistant_import_skills",
1865
+ /** Owner skill list (attach/view counts, save proposals, recent skill metrics); reads move no counter. */
1866
+ skillsList: "assistant_skills_list",
1867
+ /** Owner: what the assistant remembered recently, with undo handles (memory design §3.2). */
1868
+ memoryDigest: "assistant_memory_digest",
1869
+ /** Owner: reverse one remembered write or one batch (memory design §3.2). Never an assistant tool. */
1870
+ memoryUndo: "assistant_memory_undo",
1851
1871
  /** Projects the assistant is following (open relay threads) — list / stop following. */
1852
1872
  threads: "assistant_threads",
1853
1873
  threadClose: "assistant_thread_close"
@@ -1866,6 +1886,7 @@ var ASSISTANT_TOOL_VERBS = {
1866
1886
  project_attach_remote: ASSISTANT_VERB.projectAttachRemote,
1867
1887
  discover_repos: ASSISTANT_VERB.discoverRepos,
1868
1888
  memory: ASSISTANT_VERB.memory,
1889
+ memory_search: ASSISTANT_VERB.memorySearch,
1869
1890
  skill_view: ASSISTANT_VERB.skillView,
1870
1891
  skill_manage: ASSISTANT_VERB.skillManage,
1871
1892
  project_note: ASSISTANT_VERB.projectNote,
@@ -1874,18 +1895,23 @@ var ASSISTANT_TOOL_VERBS = {
1874
1895
  artifact_list: ASSISTANT_VERB.artifactList,
1875
1896
  artifact_read: ASSISTANT_VERB.artifactRead,
1876
1897
  decision_answer: ASSISTANT_VERB.decisionAnswer,
1877
- decision_request: ASSISTANT_VERB.decisionRequest
1898
+ decision_request: ASSISTANT_VERB.decisionRequest,
1899
+ session_control: ASSISTANT_VERB.sessionControl
1878
1900
  };
1879
- var ASSISTANT_WRITE_TOOLS = ["project_watch", "assistant_action", "memory", "skill_manage", "project_note", "project_send", "project_add", "project_attach_remote", "launch_defaults_set", "decision_answer", "decision_request"];
1901
+ var ASSISTANT_WRITE_TOOLS = ["project_watch", "assistant_action", "memory", "skill_manage", "project_note", "project_send", "project_add", "project_attach_remote", "launch_defaults_set", "decision_answer", "decision_request", "session_control"];
1880
1902
  var ASSISTANT_OWNER_VERBS = [
1881
1903
  ASSISTANT_VERB.executionSettings,
1882
1904
  ASSISTANT_VERB.stagedResolve,
1883
1905
  ASSISTANT_VERB.storeAdmin,
1884
1906
  ASSISTANT_VERB.importSkills,
1907
+ ASSISTANT_VERB.skillsList,
1908
+ ASSISTANT_VERB.memoryDigest,
1909
+ ASSISTANT_VERB.memoryUndo,
1885
1910
  ASSISTANT_VERB.threadClose
1886
1911
  ];
1887
1912
  var ASSISTANT_REVIEW_TURN_VERBS = [
1888
1913
  ASSISTANT_VERB.memory,
1914
+ ASSISTANT_VERB.memorySearch,
1889
1915
  ASSISTANT_VERB.skillView,
1890
1916
  ASSISTANT_VERB.skillManage,
1891
1917
  ASSISTANT_VERB.projectNote
@@ -2813,13 +2839,13 @@ function isMissionBriefWire(value) {
2813
2839
  }
2814
2840
  return true;
2815
2841
  }
2816
- var STRUCTURED_MISSION_KEYS = ["summary", "outcome", "outcomeReason", "version", "carryOver", "openItems"];
2842
+ var STRUCTURED_MISSION_KEYS = ["summary", "releaseNote", "outcome", "outcomeReason", "version", "carryOver", "openItems"];
2817
2843
  function isOpenItemCountsWire(value) {
2818
2844
  if (!isRecord(value) || !hasOnlyKeys2(value, ["remaining", "live_check", "decision", "evidence"])) return false;
2819
2845
  return ["remaining", "live_check", "decision", "evidence"].every((k) => isNonNegativeInt(value[k]));
2820
2846
  }
2821
2847
  function isStructuredMissionFields(value) {
2822
- for (const k of ["summary", "outcome", "outcomeReason"]) {
2848
+ for (const k of ["summary", "releaseNote", "outcome", "outcomeReason"]) {
2823
2849
  if (value[k] !== void 0 && typeof value[k] !== "string") return false;
2824
2850
  }
2825
2851
  if (value.version !== void 0 && !isNonNegativeInt(value.version)) return false;
@@ -2837,7 +2863,7 @@ function isMeshMissionRecordWire(value) {
2837
2863
  return true;
2838
2864
  }
2839
2865
  function isMissionUpsertRequest(value) {
2840
- if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "id", "title", "goal", "status", "brief", "structured", "summary", "outcome", "outcomeReason", "carryOverTo", "toCarryOver", "itemsAdd", "itemsUpdate"])) return false;
2866
+ if (!isRecord(value) || !hasOnlyKeys2(value, ["v", "meshId", "id", "title", "goal", "status", "brief", "structured", "summary", "releaseNote", "outcome", "outcomeReason", "carryOverTo", "toCarryOver", "itemsAdd", "itemsUpdate"])) return false;
2841
2867
  if (value.v !== TURN_IPC_PROTOCOL_VERSION) return false;
2842
2868
  if (!isEvidenceIdentifier(value.meshId)) return false;
2843
2869
  if (value.id !== void 0 && !isEvidenceIdentifier(value.id)) return false;
@@ -2845,7 +2871,7 @@ function isMissionUpsertRequest(value) {
2845
2871
  if (value.title.trim().length === 0 && value.toCarryOver !== true && value.id === void 0) return false;
2846
2872
  if (value.structured !== void 0 && typeof value.structured !== "boolean") return false;
2847
2873
  if (value.toCarryOver !== void 0 && typeof value.toCarryOver !== "boolean") return false;
2848
- for (const k of ["summary", "outcome", "outcomeReason"]) {
2874
+ for (const k of ["summary", "releaseNote", "outcome", "outcomeReason"]) {
2849
2875
  if (value[k] !== void 0 && typeof value[k] !== "string") return false;
2850
2876
  }
2851
2877
  if (value.carryOverTo !== void 0 && !isEvidenceIdentifier(value.carryOverTo)) return false;
@@ -3475,7 +3501,7 @@ function touchedFilesOutsideOwnership(touched, owned) {
3475
3501
 
3476
3502
  // src/mission-items.ts
3477
3503
  var MISSION_ITEM_KINDS = ["remaining", "live_check", "decision", "evidence"];
3478
- var MISSION_ITEM_STATES = ["open", "done", "dropped", "moved", "answered", "expired", "withdrawn", "superseded"];
3504
+ var MISSION_ITEM_STATES = ["open", "done", "failed", "dropped", "moved", "answered", "expired", "withdrawn", "superseded"];
3479
3505
  var COORDINATOR_SETTABLE_ITEM_STATES = {
3480
3506
  remaining: ["open", "done", "dropped"],
3481
3507
  live_check: ["open", "done", "dropped"],
@@ -3745,6 +3771,81 @@ function normalizeReportCommits(value) {
3745
3771
  return out;
3746
3772
  }
3747
3773
 
3774
+ // src/mission-git-state.ts
3775
+ var MISSION_REF_GIT_STATUSES = ["contained_ancestor", "contained_patch_equivalent", "not_contained", "unknown"];
3776
+ var MISSION_REF_GIT_METHODS = ["ancestry", "cherry", "residual_patch"];
3777
+ var MISSION_GIT_STATES = ["no_refs", "landed", "partial", "not_landed", "unknown"];
3778
+ function isMissionRefContained(status) {
3779
+ return status === "contained_ancestor" || status === "contained_patch_equivalent";
3780
+ }
3781
+ function aggregateMissionGitState(statuses) {
3782
+ const total = statuses.length;
3783
+ const contained = statuses.filter(isMissionRefContained).length;
3784
+ const notContained = statuses.filter((s) => s === "not_contained").length;
3785
+ const unknown = statuses.filter((s) => s === "unknown").length;
3786
+ const counts = { total, contained, notContained, unknown };
3787
+ if (total === 0) return { state: "no_refs", partialUnknown: false, counts };
3788
+ if (contained === total) return { state: "landed", partialUnknown: false, counts };
3789
+ if (contained > 0) return { state: "partial", partialUnknown: unknown > 0, counts };
3790
+ if (notContained === total) return { state: "not_landed", partialUnknown: false, counts };
3791
+ return { state: "unknown", partialUnknown: false, counts };
3792
+ }
3793
+
3794
+ // src/release.ts
3795
+ var MESH_RELEASE_CHANNELS = ["preview", "stable"];
3796
+ function isMeshReleaseChannel(value) {
3797
+ return typeof value === "string" && MESH_RELEASE_CHANNELS.includes(value);
3798
+ }
3799
+ var MESH_RELEASE_STATUSES = ["planned", "frozen", "deployed", "verified", "superseded", "cancelled"];
3800
+ function isReleaseStatus(value) {
3801
+ return typeof value === "string" && MESH_RELEASE_STATUSES.includes(value);
3802
+ }
3803
+ var RELEASE_MEMBER_STATES = ["member", "moved_out", "removed"];
3804
+ var RELEASE_ACTORS = ["coordinator", "owner", "assistant", "script"];
3805
+ var RELEASE_EVENT_TYPES = [
3806
+ "created",
3807
+ "status_changed",
3808
+ "scope_added",
3809
+ "scope_moved",
3810
+ "scope_removed",
3811
+ "deploy_recorded",
3812
+ "changelog_drafted",
3813
+ "changelog_applied"
3814
+ ];
3815
+ var MISSION_RELEASE_EVENT_TYPES = ["release_attached", "release_moved", "release_detached"];
3816
+ var RELEASE_LIMITS = {
3817
+ name: 80,
3818
+ note: 500,
3819
+ /** `mesh_missions.release_note`: one user/operator-visible sentence. */
3820
+ releaseNote: 400,
3821
+ missionsPerCall: 100,
3822
+ changelogEntries: 300
3823
+ };
3824
+ var CHANGELOG_SECTIONS = ["Added", "Fixed", "Changed"];
3825
+ var NEEDS_WORDING_MARKER = "[needs user-facing wording]";
3826
+ function changelogMissionMarker(missionId) {
3827
+ return `<!-- m:${missionId.slice(0, 8)} -->`;
3828
+ }
3829
+ function classifyChangelogSection(text, hint) {
3830
+ const m = /^\s*\[(added|fixed|changed)\]\s*/i.exec(text);
3831
+ if (m) {
3832
+ const key = m[1].toLowerCase();
3833
+ return { section: key === "added" ? "Added" : key === "fixed" ? "Fixed" : "Changed", text: text.slice(m[0].length).trim() };
3834
+ }
3835
+ const probe = `${hint ?? ""} ${text}`.toLowerCase();
3836
+ if (/\b(fix|fixes|fixed|bug|regression|crash|error)\b|오류|결함|버그|수정/.test(probe)) return { section: "Fixed", text };
3837
+ if (/\b(add|adds|added|new|introduc\w*|support\w*)\b|신규|추가/.test(probe)) return { section: "Added", text };
3838
+ return { section: "Changed", text };
3839
+ }
3840
+ function lintChangelogText(text) {
3841
+ const out = [];
3842
+ if (/\bwave[\s-]*\d+/i.test(text) || /웨이브\s*\d+/.test(text)) out.push("mentions an internal wave number");
3843
+ if (/\brc[.\s-]?\d+\b/i.test(text)) out.push("mentions an internal rc number");
3844
+ if (/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/i.test(text) || /\bmi_[0-9a-f]{12}\b/.test(text) || /\brel_[0-9a-f]{12}\b/.test(text)) out.push("contains an internal id");
3845
+ if (/\bmission\b/i.test(text)) out.push('mentions "mission" (internal vocabulary)');
3846
+ return out;
3847
+ }
3848
+
3748
3849
  // src/decision-push-relay.ts
3749
3850
  var DECISION_PUSH_RELAY_COMMAND = "mission_decision_push_relay_answer";
3750
3851
  var DECISION_PUSH_RELAY_SOURCE = "push_relay";
@@ -4212,6 +4313,7 @@ export {
4212
4313
  CANONICAL_MESH_TOOL_NAMES,
4213
4314
  CARRY_OVER_MISSION_GOAL,
4214
4315
  CARRY_OVER_MISSION_TITLE,
4316
+ CHANGELOG_SECTIONS,
4215
4317
  CLAUDE_TUI_REVIEW_PAGE_NOT_FOCUSED_PREFIX,
4216
4318
  CLAUDE_TUI_REVIEW_UNCONFIRMED_PREFIX,
4217
4319
  CLI_SLOT_RECIPES,
@@ -4262,6 +4364,8 @@ export {
4262
4364
  MESH_MISSION_STATUSES,
4263
4365
  MESH_P2P_SIGNAL_TYPES,
4264
4366
  MESH_RECORD_PAYLOAD_KEYS,
4367
+ MESH_RELEASE_CHANNELS,
4368
+ MESH_RELEASE_STATUSES,
4265
4369
  MESH_SESSION_CLEANUP_MODES,
4266
4370
  MESH_STATUS_DOC_SPEC,
4267
4371
  MESH_TASK_DIFFICULTIES,
@@ -4276,15 +4380,20 @@ export {
4276
4380
  MISSION_DECISION_ON_DUE,
4277
4381
  MISSION_DECISION_OPTION_IDS,
4278
4382
  MISSION_DECISION_URGENCIES,
4383
+ MISSION_GIT_STATES,
4279
4384
  MISSION_ITEM_KINDS,
4280
4385
  MISSION_ITEM_STATES,
4281
4386
  MISSION_LIMITS,
4282
4387
  MISSION_OUTCOMES,
4388
+ MISSION_REF_GIT_METHODS,
4389
+ MISSION_REF_GIT_STATUSES,
4283
4390
  MISSION_REF_KINDS,
4391
+ MISSION_RELEASE_EVENT_TYPES,
4284
4392
  MODEL_AXIS_SOURCES,
4285
4393
  MODEL_SELECTION_HISTORY_LIMIT,
4286
4394
  MeshChunkAssembler,
4287
4395
  NATIVE_TURN_OUTCOMES,
4396
+ NEEDS_WORDING_MARKER,
4288
4397
  NOTIFY_KINDS,
4289
4398
  NO_PROGRESS_OBSERVED_STATUSES,
4290
4399
  NPM_UPDATE_TAGS,
@@ -4307,7 +4416,11 @@ export {
4307
4416
  RELAY_REPROBE_BASE_DELAY_MS,
4308
4417
  RELAY_REPROBE_JITTER_RATIO,
4309
4418
  RELAY_REPROBE_MAX_DELAY_MS,
4419
+ RELEASE_ACTORS,
4310
4420
  RELEASE_CHANNELS,
4421
+ RELEASE_EVENT_TYPES,
4422
+ RELEASE_LIMITS,
4423
+ RELEASE_MEMBER_STATES,
4311
4424
  REMOVED_MESH_TOOLS,
4312
4425
  RETIRED_MESH_TOOLS,
4313
4426
  RelayReprobeScheduler,
@@ -4354,12 +4467,15 @@ export {
4354
4467
  WORKER_REPORT_OUTCOMES,
4355
4468
  WORKER_REPORT_SUMMARY_MAX_CHARS,
4356
4469
  WORKER_TOOLS,
4470
+ aggregateMissionGitState,
4357
4471
  appendWorkerProtocolFooter,
4358
4472
  argsCarryStatusProbeMarker,
4359
4473
  assessQuotaFreshness,
4360
4474
  boundEventPayload,
4361
4475
  buildSlotProposal,
4362
4476
  canonicalDaemonId,
4477
+ changelogMissionMarker,
4478
+ classifyChangelogSection,
4363
4479
  classifySessionStatus,
4364
4480
  compareDashboardWireVersion,
4365
4481
  compareSemver,
@@ -4476,6 +4592,7 @@ export {
4476
4592
  isMeshMissionStatusValue,
4477
4593
  isMeshP2PSignalType,
4478
4594
  isMeshRecordPayload,
4595
+ isMeshReleaseChannel,
4479
4596
  isMeshTaskDifficulty,
4480
4597
  isMeshTaskMode,
4481
4598
  isMeshTaskPriority,
@@ -4484,6 +4601,7 @@ export {
4484
4601
  isMeshTopicEntry,
4485
4602
  isMessageId,
4486
4603
  isMissionOutcome,
4604
+ isMissionRefContained,
4487
4605
  isMissionUpsertResponse,
4488
4606
  isModelAxisSource,
4489
4607
  isNativeMarkerRef,
@@ -4497,6 +4615,7 @@ export {
4497
4615
  isRawDaemonDoId,
4498
4616
  isReadyStatus,
4499
4617
  isRecord,
4618
+ isReleaseStatus,
4500
4619
  isSendPolicy,
4501
4620
  isSendPolicyMode,
4502
4621
  isSendRefusal,
@@ -4523,6 +4642,7 @@ export {
4523
4642
  isWorkingStatus,
4524
4643
  joinRepoPath,
4525
4644
  launchModelSelectionValue,
4645
+ lintChangelogText,
4526
4646
  machineCoreFromDaemonId,
4527
4647
  makeTypeGuard,
4528
4648
  measureWorstCaseChunkEnvelopeBytes,