agentplugged 1.2.0 → 1.3.0

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.
@@ -1,4 +1,4 @@
1
- import { $ as readinessIdOf, $a as UpdateStoryInputSchema, $i as lessonIdOf, $n as CI_EVENT_TYPES, $r as criterionId, $t as RepositoryPathSchema, Aa as SkillContentSchema, Ai as ReportMeasuresInputSchema, An as COURSE_EVENT_TYPES, Ao as MODEL_TIERS, Ar as CHAT_RETENTION_MS, Ba as DeferredReasonSchema, Bi as hasMisleadingControl, Bn as DocumentHeaderSchema, Bo as recommendedGitWorkflow, Br as menuKey, Bt as FAST_TRACK_ENGINE_REASONS, C as USAGE_EVENT_TYPES, Ca as PrerequisiteCommandSchema, Ci as CONFIRMATION_MODES, Cn as SOLO_METHODS, Cr as isTrustSignatureTag, Ct as MACHINE_EVENT_TYPES, Di as OpenCheckpointInputSchema, Dn as hypothesisIdOf, Do as INHERIT_MODEL, Ea as AgentContentSchema, Ei as NOTE_REQUIRED, Eo as ValidationSettingsSchema, Er as ANTICIPATED_ANSWER_WINDOW_MS, Et as LOOP_EVENT_TYPES, F as THREE_VIEWS_AGENTS, Fi as SESSION_EVENT_TYPES, Fn as ArchitectureHeaderSchema, G as PlanSprintInputSchema, Ga as AGENT_EVENT_TYPES, Gn as REQUIREMENT_ID_PATTERN, Go as SIGNATURE_REASON, Gt as missingDeclarations, H as stackIdOf, Ha as compareStoryIds, Hi as LESSON_EVENT_TYPES, Hn as EpicHeaderSchema, Ho as sameWorkflow, Hr as SkillFrontmatterSchema, Ht as FAST_TRACK_OPTIONS, Ia as CompleteDeferredInputSchema, Ii as PUBLICATION_DOCS_DIR, In as CREATOR_OWNER, Io as GIT_EVENT_TYPES, It as HUMAN_DEVICE_PATTERN, J as sprintIdOf, Ja as ReportCostInputSchema, Jn as StoryHeaderSchema, Jo as jsonValueIssue, Jr as qaProofBelongs, Jt as KNOWLEDGE_STORY_FIELD, K as SPRINT_EVENT_TYPES, Ka as MAIN_SESSION_AGENT, Kn as STORY_DOCUMENT_ID_PATTERN, Kr as QA_EVENT_TYPES, Kt as DEFAULT_MERGE_METHOD, La as DEFERRED_EVENT_TYPES, Ln as DOCUMENT_DIRS, Lr as RULE_LOCKS, Lt as HUMAN_EVENT_TYPES, Mr as QUESTION_TOOL_NAME, Mt as RESERVED_EVENT_TYPES, N as TABLE_ANGLES, Na as isSkillContent, Nn as courseIdOf, No as ISSUE, Nt as journalEventPath, O as TEST_REVIEW_EVENT_TYPES, Oa as REQUIRED_CONTENT_FIELDS, Oi as RECIPIENT_ROLES, On as isCritiqueGesture, Ot as EVENT_TYPES, P as TABLE_EVENT_TYPES, Pa as isSkillOverrideContent, Pn as parseCourseStart, Po as issueName, Qa as SubmitResultInputSchema, Qi as commonIdOf, Qn as INSTALL_EVENT_TYPES, Qr as criteriaInLine, Qt as MERGE_EVENT_TYPES, Ra as DeferWorkInputSchema, Rn as DOCUMENT_ID_PATTERN, Rr as AgentDefinitionSchema, Rt as HUMAN_ONLY_EVENT_TYPES, Sa as EnvironmentCheckIdSchema, Si as CHECKPOINT_EVENT_TYPES, Sn as RECONCILE_KINDS, So as TOOL_IDS, Sr as deviceRevokedRecord, St as SUBSTANTIVE_CLASSES, T as UsageMeasuredPayloadSchema, Ta as PrerequisitesSchema, Ti as LIFTING_DECISIONS, Tn as critiquePathOf, To as VALIDATION_POINTS, Tr as rootCertifiedRecord, Tt as HYPOTHESIS_KIND, U as MAX_SPRINT_CHECKPOINT_SUMMARY, Ua as deferredIdOf, Ui as MEMORY_APPROVING_DECISIONS, Un as KNOWLEDGE_SOURCES_FIELD, Uo as EVENT_REASON, Ut as LeaveFastTrackInputSchema, V as STACK_EVENT_TYPES, Va as canonicalStoryId, Vi as CommonLessonIdSchema, Vn as EPIC_DOCUMENT_ID_PATTERN, Vo as resolveGitWorkflow, Vr as AgentFrontmatterSchema, Vt as FAST_TRACK_EVENT_TYPES, W as MAX_SPRINT_USD, Wa as hasControlCharacter, Wi as MEMORY_EVENT_TYPES, Wn as KnowledgeSourceSchema, Wo as EVENT_TYPE_PATTERN, Wt as StartStoryFastTrackInputSchema, Xa as ReportStatusInputSchema, Xn as ARCHITECTURE_DEPENDENCIES_FIELD, Xo as TEST_EVENT_TYPE, Xr as CRITERION_EVENT_TYPES, Xt as KnowledgeStorySchema, Y as READINESS_EVENT_TYPES, Ya as ReportProgressInputSchema, Yn as epicIdOf, Yo as parseEventEnvelope, Yt as KnowledgeCodeSchema, Za as StoryIdSchema, Zi as actionIdOf, Zn as DependenciesSchema, Zo as ErrorCode, Zt as MAX_MERGED_FILES, _ as currentEvent, _i as reviewIdOf, _n as NOAH_AGENT, _o as RULE_VALUES, _r as DEVICE_TRUST_SYSTEM_EVENT_TYPES, _t as CONFLICT_CLASSES, a as fromBase64url, ai as JUDGE_LENS, an as DEVIATION_EVENT_TYPES, ao as DEVELOPER_SPECIALTIES, ar as MAX_CI_CHECKS, at as PRODUCT_KEYS_EXPORT_PREFIX, b as isSensitiveEventType, ba as isStoryStep, bi as STORY_EVENT_TYPES, bo as SkillNameSchema, br as deviceKindOf, bt as MERGE_ORDER_EVENT_TYPES, ci as REVIEW_LENSES, co as InstallSettingsSchema, cr as CHECKPOINT_CLOSED_EVENT_TYPES, ct as ProductKeyRotatedPayloadSchema, d as ClaudeSettingsSchema, do as PHASE_IDS, ea as retroIdOf, ei as REQUIREMENT_EVENT_TYPES, eo as AgentIdSchema, er as CI_FORGES, f as CursorCliConfigSchema, fa as WRITE_GUARD_EVENT_TYPES, fn as TRACED_REQUIREMENT_PATTERN, fo as PROFILE_PRESET_IDS, fr as WEB_ANSWER_EVENT_TYPES, ft as isSensitivePath, go as RULE_ACTIONS, gr as DEVICE_TRUST_EVENT_TYPES, h as REDACTED_SECRET, ha as SkillOverrideSchema, hn as DELEGATION_EVENT_TYPES, ho as PullRequestSettingsSchema, hr as BRIDGE_ID_PATTERN, ht as METHOD_EVENT_TYPES, i as sha256Hex, ia as CREATOR_ACTION_KINDS, ii as SyncRequirementsInputSchema, io as DEFAULT_VALIDATION_POINTS, ir as CiWaiverReasonSchema, it as PAYLOAD_ENCRYPTION_ALG, ja as contentSections, ji as checkpointIdOf, jn as COURSE_KINDS, jo as ModelTableSchema, jt as MACHINE_DEVICE_PATTERN, ka as SKILL_OVERRIDE_FIELDS, ki as RESOLUTION_DECISIONS, kn as isHypothesisOutcome, ko as MODEL_CLIENT_IDS, kr as CHAT_EVENT_TYPES, l as utf8$1, la as engineUpdateRisk, li as SECURITY_REASONS, ln as REQUIREMENT_STATUSES, lo as MethodConfigSchema, lr as CHAIN_EVENT_TYPES, m as GetStateInputSchema, ma as REVIEW_SKILLS, mi as findingIdOf, mn as deviationIdOf, mo as ProfileSchema, mr as WEB_ANSWER_WINDOW_MS, mt as ORDER_EVENT_TYPES, n as randomBytes$2, ni as SettleGapInputSchema, nr as CiReportedPayloadSchema, nt as KEY_ID_PATTERN, o as fromUtf8, oa as FILE_CREATOR_ACTIONS, oo as DOMAIN_IDS, or as CHECKPOINT_DECIDED_EVENT_TYPES, ot as PRODUCT_KEY_EVENT_TYPES, p as SyncManifestSchema, po as PROFILE_PRESET_SPECS, q as SPRINT_TITLE_PREFIX, qn as STORY_SECTIONS, qo as eventInvalid, qt as KNOWLEDGE_CODE_FIELD, r as sha256$2, ra as CREATOR_ACTION_EVENT_TYPES, ri as SubmitAuditInputSchema, rr as CiUrlSchema, s as toBase64url, sa as FORGE_CREATOR_ACTIONS, si as REVIEW_EVENT_TYPES, so as INSTALL_MODES, st as PRODUCT_KEY_EXPORT_PREFIX, t as gitBlobId, ti as RecordProofInputSchema, tn as ELICITATION_EVENT_TYPES, to as DEFAULT_INSTALL_MODE, tr as CheckCiInputSchema, tt as ENCRYPTED_FILE_PREFIX, ua as proofCommandsRisk, uo as PERMISSION_MODES, ur as BUDGET_EVENT_TYPES, ut as SENSITIVE_AREAS, v as eventTypeSpec, vi as CommitIdSchema, vn as CRITIQUE_DOCUMENT_KINDS, vo as RulesSchema, wa as PrerequisiteVersionSchema, wn as critiqueIdOf, wo as VALIDATION_MODES, wr as pairOfferRecord, wt as HYPOTHESIS_CONFIDENCES, x as isTestEventType, xa as ARCHITECTURE_PREREQUISITES_FIELD, xi as isStoryBranch, xr as devicePairedRecord, y as eventTypeUpgrade, ya as PHASE_STEPS, yi as OpenPullRequestInputSchema, yn as CRITIQUE_EVENT_TYPES, yo as SemverSchema, yr as TRUST_SIGNATURE_TAGS, za as DeferredIdInputSchema, zi as hasHiddenCharacter, zn as DOCUMENT_KINDS, zo as GitWorkflowSchema, zr as AgentOverrideSchema, zt as PresenceCredentialSchema } from "./hash.js";
1
+ import { $ as readinessIdOf, $a as AGENT_EVENT_TYPES, $n as epicIdOf, $o as EVENT_REASON, $t as MAX_MERGED_FILES, Aa as EnvironmentCheckIdSchema, Ai as CHECKPOINT_EVENT_TYPES, Ao as SkillNameSchema, Ar as deviceRevokedRecord, At as EVENT_TYPES, Bn as CREATOR_OWNER, Bo as MODEL_TIERS, Br as QUESTION_TOOL_NAME, Bt as HUMAN_ONLY_EVENT_TYPES, C as USAGE_EVENT_TYPES, Ca as SkillOverrideSchema, Cn as CRITIQUE_EVENT_TYPES, Co as PROFILE_PRESET_SPECS, Cr as BRIDGE_ID_PATTERN, Da as PHASE_STEPS, Di as OpenPullRequestInputSchema, Dn as SOLO_METHODS, Do as RULE_VALUES, Dr as TRUST_SIGNATURE_TAGS, Dt as HYPOTHESIS_KIND, Ei as CommitIdSchema, En as RECONCILE_KINDS, Eo as RULE_ACTIONS, Et as HYPOTHESIS_CONFIDENCES, F as THREE_VIEWS_AGENTS, Fi as OpenCheckpointInputSchema, Fn as COURSE_KINDS, Fo as VALIDATION_POINTS, Ft as journalEventPath, G as PlanSprintInputSchema, Ga as DEFERRED_EVENT_TYPES, Gn as EPIC_DOCUMENT_ID_PATTERN, Gr as RULE_LOCKS, Gt as LeaveFastTrackInputSchema, H as stackIdOf, Ha as isSkillOverrideContent, Hn as DOCUMENT_ID_PATTERN, Ht as FAST_TRACK_ENGINE_REASONS, Ia as REQUIRED_CONTENT_FIELDS, Ii as RECIPIENT_ROLES, Io as ValidationSettingsSchema, J as sprintIdOf, Ja as DeferredReasonSchema, Ji as hasMisleadingControl, Jn as KnowledgeSourceSchema, Jr as menuKey, Jt as DEFAULT_MERGE_METHOD, K as SPRINT_EVENT_TYPES, Ka as DeferWorkInputSchema, Kn as EpicHeaderSchema, Ko as GIT_EVENT_TYPES, Kr as AgentDefinitionSchema, Kt as StartStoryFastTrackInputSchema, La as SKILL_OVERRIDE_FIELDS, Li as RESOLUTION_DECISIONS, Ln as courseIdOf, Lo as INHERIT_MODEL, Lr as CHAT_EVENT_TYPES, Ma as PrerequisiteVersionSchema, Mn as isCritiqueGesture, Mo as TOOL_IDS, Mr as pairOfferRecord, N as TABLE_ANGLES, Na as PrerequisitesSchema, Ni as LIFTING_DECISIONS, Nn as isHypothesisOutcome, Nr as rootCertifiedRecord, Nt as MACHINE_DEVICE_PATTERN, O as TEST_REVIEW_EVENT_TYPES, Oa as isStoryStep, Oi as STORY_EVENT_TYPES, On as critiqueIdOf, Oo as RulesSchema, Or as deviceKindOf, Ot as LOOP_EVENT_TYPES, P as TABLE_EVENT_TYPES, Pa as AgentContentSchema, Pi as NOTE_REQUIRED, Pn as COURSE_EVENT_TYPES, Po as VALIDATION_MODES, Pr as ANTICIPATED_ANSWER_WINDOW_MS, Pt as RESERVED_EVENT_TYPES, Qa as hasControlCharacter, Qi as MEMORY_EVENT_TYPES, Qn as StoryHeaderSchema, Qo as sameWorkflow, Qt as KnowledgeStorySchema, Ra as SkillContentSchema, Ri as ReportMeasuresInputSchema, Rn as parseCourseStart, Rr as CHAT_RETENTION_MS, Rt as HUMAN_DEVICE_PATTERN, Sa as REVIEW_SKILLS, Si as findingIdOf, Sn as CRITIQUE_DOCUMENT_KINDS, So as PROFILE_PRESET_IDS, Sr as WEB_ANSWER_WINDOW_MS, St as MERGE_ORDER_EVENT_TYPES, T as UsageMeasuredPayloadSchema, Ti as reviewIdOf, To as PullRequestSettingsSchema, Tr as DEVICE_TRUST_SYSTEM_EVENT_TYPES, Tt as MACHINE_EVENT_TYPES, U as MAX_SPRINT_CHECKPOINT_SUMMARY, Ui as SESSION_EVENT_TYPES, Un as DOCUMENT_KINDS, Uo as ISSUE, Ut as FAST_TRACK_EVENT_TYPES, V as STACK_EVENT_TYPES, Va as isSkillContent, Vn as DOCUMENT_DIRS, Vo as ModelTableSchema, Vt as PresenceCredentialSchema, W as MAX_SPRINT_USD, Wa as CompleteDeferredInputSchema, Wi as PUBLICATION_DOCS_DIR, Wn as DocumentHeaderSchema, Wo as issueName, Wt as FAST_TRACK_OPTIONS, Xa as compareStoryIds, Xi as LESSON_EVENT_TYPES, Xn as STORY_DOCUMENT_ID_PATTERN, Xo as recommendedGitWorkflow, Xr as SkillFrontmatterSchema, Xt as KNOWLEDGE_STORY_FIELD, Y as READINESS_EVENT_TYPES, Ya as canonicalStoryId, Yi as CommonLessonIdSchema, Yn as REQUIREMENT_ID_PATTERN, Yo as GitWorkflowSchema, Yr as AgentFrontmatterSchema, Yt as KNOWLEDGE_CODE_FIELD, Za as deferredIdOf, Zi as MEMORY_APPROVING_DECISIONS, Zn as STORY_SECTIONS, Zo as resolveGitWorkflow, Zt as KnowledgeCodeSchema, _ as currentEvent, _a as engineUpdateRisk, _i as SECURITY_REASONS, _o as INSTALL_MODES, _t as METHOD_EVENT_TYPES, a as fromBase64url, aa as actionIdOf, an as ELICITATION_EVENT_TYPES, ao as StoryIdSchema, ar as CheckCiInputSchema, as as parseEventEnvelope, at as PRODUCT_KEYS_EXPORT_PREFIX, b as isSensitiveEventType, ba as WRITE_GUARD_EVENT_TYPES, bo as PERMISSION_MODES, br as WEB_ANSWER_EVENT_TYPES, ca as retroIdOf, ci as REQUIREMENT_EVENT_TYPES, co as AgentIdSchema, cr as CiWaiverReasonSchema, cs as TEST_EVENT_TYPE, ct as ProductKeyRotatedPayloadSchema, d as ClaudeSettingsSchema, da as CREATOR_ACTION_EVENT_TYPES, di as SubmitAuditInputSchema, ei as QA_EVENT_TYPES, en as MERGE_EVENT_TYPES, eo as MAIN_SESSION_AGENT, er as ARCHITECTURE_DEPENDENCIES_FIELD, es as EVENT_TYPE_PATTERN, f as CursorCliConfigSchema, fa as CREATOR_ACTION_KINDS, fi as SyncRequirementsInputSchema, fr as CHECKPOINT_CLOSED_EVENT_TYPES, ft as isSensitivePath, gi as REVIEW_LENSES, gn as TRACED_REQUIREMENT_PATTERN, go as DOMAIN_IDS, gt as TEAM_EVENT_TYPES, h as REDACTED_SECRET, ha as FORGE_CREATOR_ACTIONS, hi as REVIEW_EVENT_TYPES, ho as DEVELOPER_SPECIALTIES, hr as BUDGET_EVENT_TYPES, i as sha256Hex, ii as CRITERION_EVENT_TYPES, io as ReportStatusInputSchema, ir as CI_FORGES, is as jsonValueIssue, it as PAYLOAD_ENCRYPTION_ALG, ja as PrerequisiteCommandSchema, ji as CONFIRMATION_MODES, jn as hypothesisIdOf, jr as isTrustSignatureTag, ka as ARCHITECTURE_PREREQUISITES_FIELD, ki as isStoryBranch, kn as critiquePathOf, ko as SemverSchema, kr as devicePairedRecord, l as utf8$1, li as RecordProofInputSchema, ln as DEVIATION_EVENT_TYPES, lr as MAX_CI_CHECKS, ls as ErrorCode, m as GetStateInputSchema, ma as FILE_CREATOR_ACTIONS, mo as DEFAULT_VALIDATION_POINTS, mt as ORDER_EVENT_TYPES, n as randomBytes$2, ni as qaProofBelongs, nn as EXCHANGE_EVENT_TYPES, no as ReportCostInputSchema, nr as INSTALL_EVENT_TYPES, nt as KEY_ID_PATTERN, o as fromUtf8, oa as commonIdOf, oi as criteriaInLine, oo as SubmitResultInputSchema, or as CiReportedPayloadSchema, os as extensionModuleOf, ot as PRODUCT_KEY_EVENT_TYPES, p as SyncManifestSchema, pi as JUDGE_LENS, pn as REQUIREMENT_STATUSES, pr as CHAIN_EVENT_TYPES, q as SPRINT_TITLE_PREFIX, qa as DeferredIdInputSchema, qi as hasHiddenCharacter, qn as KNOWLEDGE_SOURCES_FIELD, qr as AgentOverrideSchema, qt as missingDeclarations, r as sha256$2, ro as ReportProgressInputSchema, rr as CI_EVENT_TYPES, rs as eventInvalid, s as toBase64url, sa as lessonIdOf, si as criterionId, so as UpdateStoryInputSchema, sr as CiUrlSchema, ss as isExtensionEventType, st as PRODUCT_KEY_EXPORT_PREFIX, t as gitBlobId, tn as RepositoryPathSchema, tr as DependenciesSchema, ts as SIGNATURE_REASON, tt as ENCRYPTED_FILE_PREFIX, ui as SettleGapInputSchema, uo as DEFAULT_INSTALL_MODE, ur as CHECKPOINT_DECIDED_EVENT_TYPES, ut as SENSITIVE_AREAS, v as eventTypeSpec, va as proofCommandsRisk, vn as deviationIdOf, vo as InstallSettingsSchema, wo as ProfileSchema, wr as DEVICE_TRUST_EVENT_TYPES, wt as SUBSTANTIVE_CLASSES, x as isTestEventType, xn as NOAH_AGENT, xo as PHASE_IDS, y as eventTypeUpgrade, yn as DELEGATION_EVENT_TYPES, yo as MethodConfigSchema, yt as CONFLICT_CLASSES, za as contentSections, zi as checkpointIdOf, zn as ArchitectureHeaderSchema, zo as MODEL_CLIENT_IDS, zt as HUMAN_EVENT_TYPES } from "./hash.js";
2
2
  import { z } from "zod";
3
3
  import * as nc from "node:crypto";
4
4
  import { LineCounter, isMap, isScalar, isSeq, parse, parseDocument, stringify } from "yaml";
@@ -18617,6 +18617,8 @@ const TOOL_GROUPS = {
18617
18617
  actions: {
18618
18618
  status: { command: "report_status" },
18619
18619
  delegate: { command: "delegate" },
18620
+ summarize: { command: "summarize" },
18621
+ pause: { command: "pause_team" },
18620
18622
  workshop: { command: "workshop" }
18621
18623
  }
18622
18624
  },
@@ -18633,6 +18635,7 @@ const TOOL_GROUPS = {
18633
18635
  },
18634
18636
  external_read: { command: "record_external_read" },
18635
18637
  write: { command: "check_write" },
18638
+ call: { command: "check_call" },
18636
18639
  creator_action: {
18637
18640
  command: "request_creator_action",
18638
18641
  rename: WHAT
@@ -19574,6 +19577,12 @@ answer, load your full definition (below) and follow it. The essentials:
19574
19577
  question you asked the creator. Conversational work (the brief, the PRD, the UX
19575
19578
  specification, the architecture) stays in this conversation, never in a sub-agent: a
19576
19579
  sub-agent cannot talk with the creator, and relaying each message would cost more.
19580
+ 8. You may be started without a head. A program on the creator's machine can start you in this
19581
+ folder when they write from the web view or the phone: nobody watches your terminal, and their
19582
+ message is your prompt. You are the same Noah, with the same contract: launch the sub-agents
19583
+ yourself (the program starts none), answer in a few plain sentences, and write what you decide
19584
+ to the journal with the engine's commands, never in the conversation only. A pause of the team
19585
+ (\`state.next\` answers \`paused\`) holds you too.
19577
19586
 
19578
19587
  How to hand work over in this project's AI tools:
19579
19588
 
@@ -21473,7 +21482,8 @@ const CAPABILITIES = [
21473
21482
  "isolation",
21474
21483
  "decisions",
21475
21484
  "installs",
21476
- "usage"
21485
+ "usage",
21486
+ "budget"
21477
21487
  ];
21478
21488
  /**
21479
21489
  * Why a tool has the "model" fallback: the model table gives `inherit` for one of its tiers, so
@@ -21507,6 +21517,11 @@ const CURSOR_DECISIONS_REASON = "Cursor lists the forms an MCP server asks for (
21507
21517
  * and no date per line (read on a real transcript, 2026-10-07).
21508
21518
  */
21509
21519
  const CURSOR_USAGE_REASON = "Cursor keeps no token count anywhere on the machine: its transcripts (`~/.cursor/projects/<project>/agent-transcripts/`) hold the messages and the tool calls, with no tokens, no model and no date per line. The engine therefore measures nothing of a Cursor session (`measure.usage` answers `available: false`) and never estimates it; Cursor's own usage page (your account's dashboard) is the only source. The `stop` hook of the editor may carry token counts (seen in Cursor's own code, not verified filled): it is not used.";
21520
+ const BUDGET_FALLBACK = {
21521
+ support: "fallback",
21522
+ files: [],
21523
+ reason: "this tool has no hook that sees each tool call before it runs, so the engine cannot stop the work at a story's budget at the nearest call and cannot hold the team's pause while an agent writes: the cost is read afterwards (where the engine can read the tool's traces) and the budget checkpoint opens then."
21524
+ };
21510
21525
  const CURSOR_DECISIONS_FALLBACK = {
21511
21526
  support: "fallback",
21512
21527
  files: [],
@@ -21676,6 +21691,10 @@ const COMPATIBILITY = [
21676
21691
  usage: {
21677
21692
  support: "native",
21678
21693
  files: []
21694
+ },
21695
+ budget: {
21696
+ support: "native",
21697
+ files: [".claude/settings.json"]
21679
21698
  }
21680
21699
  }
21681
21700
  },
@@ -21732,7 +21751,8 @@ const COMPATIBILITY = [
21732
21751
  usage: {
21733
21752
  support: "native",
21734
21753
  files: []
21735
- }
21754
+ },
21755
+ budget: BUDGET_FALLBACK
21736
21756
  }
21737
21757
  },
21738
21758
  {
@@ -21782,7 +21802,8 @@ const COMPATIBILITY = [
21782
21802
  usage: {
21783
21803
  support: "native",
21784
21804
  files: []
21785
- }
21805
+ },
21806
+ budget: BUDGET_FALLBACK
21786
21807
  }
21787
21808
  },
21788
21809
  {
@@ -21838,7 +21859,8 @@ const COMPATIBILITY = [
21838
21859
  support: "fallback",
21839
21860
  files: [],
21840
21861
  reason: CURSOR_USAGE_REASON
21841
- }
21862
+ },
21863
+ budget: BUDGET_FALLBACK
21842
21864
  }
21843
21865
  }
21844
21866
  ];
@@ -22816,7 +22838,7 @@ const ENTRY_KEY$1 = `mcpServers.${MCP_SERVER_NAME}`;
22816
22838
  * `mcpServers` when `sync` added it and it is left empty), and a file `sync` created is deleted
22817
22839
  * when nothing remains; without a record, nothing is touched.
22818
22840
  */
22819
- function reconcileMcpFile(file, current, targeted, launch, previous) {
22841
+ function reconcileMainEntry(file, current, targeted, launch, previous) {
22820
22842
  const servers = isRecord(current?.mcpServers) ? current.mcpServers : void 0;
22821
22843
  const existing = servers === void 0 ? void 0 : servers[MCP_SERVER_NAME];
22822
22844
  const hasEntry = servers !== void 0 && Object.hasOwn(servers, "agentplugged");
@@ -22884,6 +22906,138 @@ function reconcileMcpFile(file, current, targeted, launch, previous) {
22884
22906
  conflict: false
22885
22907
  };
22886
22908
  }
22909
+ /** The name of an extension server: lowercase letters, digits, `_` and `-`, not `agentplugged`. */
22910
+ const EXTENSION_SERVER_NAME = /^[a-z][a-z0-9_-]{0,63}$/;
22911
+ /** The servers of a request that can be declared: a valid name, never the engine's own. */
22912
+ function usableExtensionServers(extras) {
22913
+ return extras.filter((extra) => extra.name !== "agentplugged" && EXTENSION_SERVER_NAME.test(extra.name));
22914
+ }
22915
+ const SERVERS_PREFIX = "mcpServers.";
22916
+ /**
22917
+ * Beside each recorded extension entry, the manifest keeps what `sync` wrote there
22918
+ * (`mcpEntry.<name>=<canonical JSON>`), so that an entry the creator replaced since is told from
22919
+ * the one `sync` wrote: the first is never rewritten nor removed.
22920
+ */
22921
+ const WRITTEN_PREFIX = "mcpEntry.";
22922
+ const writtenKey = (name, entry) => `${WRITTEN_PREFIX}${name}=${fromUtf8(canonicalBytes(entry))}`;
22923
+ const isWrittenKeyOf = (key, name) => key.startsWith(`${WRITTEN_PREFIX}${name}=`);
22924
+ /** What `sync` wrote for `name`, from the record; undefined for a record that predates it. */
22925
+ function writtenEntry(keys, name) {
22926
+ const key = keys.find((item) => isWrittenKeyOf(item, name));
22927
+ if (key === void 0) return void 0;
22928
+ try {
22929
+ return JSON.parse(key.slice(`${WRITTEN_PREFIX}${name}=`.length));
22930
+ } catch {
22931
+ return;
22932
+ }
22933
+ }
22934
+ /** True while the entry in the file is still the one `sync` wrote (or cannot be told apart). */
22935
+ function stillOurs(keys, name, found) {
22936
+ const written = writtenEntry(keys, name);
22937
+ return written === void 0 || sameJson(written, found);
22938
+ }
22939
+ /**
22940
+ * Takes out of the result what dropping extension entries left empty: an `mcpServers` that `sync`
22941
+ * introduced, and a file that `sync` created.
22942
+ */
22943
+ function tidyServers(next, current, previous) {
22944
+ const target = next === "same" ? current : next;
22945
+ if (target === void 0 || !isRecord(target.mcpServers)) return next;
22946
+ if (Object.keys(target.mcpServers).length > 0) return next;
22947
+ if (previous?.keys.includes("mcpServers") !== true) return next;
22948
+ const { mcpServers: _gone, ...rest } = target;
22949
+ if (Object.keys(rest).length === 0 && previous.created) return void 0;
22950
+ return rest;
22951
+ }
22952
+ /**
22953
+ * `reconcileMainEntry` for the `agentplugged` server, then the same rules for each extension
22954
+ * server: while the tool is targeted, an entry is created or brought to the launch given now; an
22955
+ * entry is ours when the manifest recorded it or when it is exactly the launch given now, any
22956
+ * other is the creator's (`extraConflicts`, left as is). An entry `sync` recorded and that is no
22957
+ * longer given is removed, and all of them are once the tool leaves the list. Without extension
22958
+ * servers (given or recorded) it is exactly `reconcileMainEntry`.
22959
+ */
22960
+ function reconcileMcpFile(file, current, targeted, launch, previous, extras = []) {
22961
+ const recordedExtras = (previous?.keys ?? []).filter((key) => key.startsWith(SERVERS_PREFIX) && key !== ENTRY_KEY$1).map((key) => key.slice(11));
22962
+ const wanted = targeted ? usableExtensionServers(extras) : [];
22963
+ if (wanted.length === 0 && recordedExtras.length === 0) return reconcileMainEntry(file, current, targeted, launch, previous);
22964
+ const kept = new Set(wanted.map((extra) => extra.name));
22965
+ const dropped = recordedExtras.filter((name) => !kept.has(name));
22966
+ const previousKeys = previous?.keys ?? [];
22967
+ const removable = dropped.filter((name) => {
22968
+ if (current === void 0 || !isRecord(current.mcpServers)) return false;
22969
+ if (!Object.hasOwn(current.mcpServers, name)) return false;
22970
+ return stillOurs(previousKeys, name, current.mcpServers[name]);
22971
+ });
22972
+ let base = current;
22973
+ if (removable.length > 0 && current !== void 0 && isRecord(current.mcpServers)) {
22974
+ const servers = { ...current.mcpServers };
22975
+ for (const name of removable) delete servers[name];
22976
+ base = {
22977
+ ...current,
22978
+ mcpServers: servers
22979
+ };
22980
+ }
22981
+ const trimmed = previous === void 0 ? void 0 : {
22982
+ ...previous,
22983
+ keys: previous.keys.filter((key) => !dropped.some((n) => key === SERVERS_PREFIX + n || isWrittenKeyOf(key, n)))
22984
+ };
22985
+ const main = reconcileMainEntry(file, base, targeted, launch, trimmed);
22986
+ let working = main.next === "same" ? base : main.next;
22987
+ let record = main.record;
22988
+ if (wanted.length === 0 || base === void 0 && file.existingOnly) return {
22989
+ next: tidyServers(working === current ? main.next : working, current, previous),
22990
+ record,
22991
+ conflict: main.conflict
22992
+ };
22993
+ const servers = isRecord(working?.mcpServers) ? { ...working.mcpServers } : {};
22994
+ const introduced = [];
22995
+ const extraConflicts = [];
22996
+ const forgotten = [];
22997
+ const rewritten = [];
22998
+ let changed = false;
22999
+ for (const extra of wanted) {
23000
+ const key = SERVERS_PREFIX + extra.name;
23001
+ const entry = mcpServerEntry(file, extra.launch);
23002
+ const exists = Object.hasOwn(servers, extra.name);
23003
+ const recorded = trimmed?.keys.includes(key) === true;
23004
+ if (exists && sameJson(servers[extra.name], entry)) {
23005
+ if (recorded) {
23006
+ introduced.push(key, writtenKey(extra.name, entry));
23007
+ rewritten.push(extra.name);
23008
+ }
23009
+ continue;
23010
+ }
23011
+ if (exists && (!recorded || !stillOurs(trimmed?.keys ?? [], extra.name, servers[extra.name]))) {
23012
+ extraConflicts.push(extra.name);
23013
+ forgotten.push(extra.name);
23014
+ continue;
23015
+ }
23016
+ servers[extra.name] = entry;
23017
+ introduced.push(key, writtenKey(extra.name, entry));
23018
+ rewritten.push(extra.name);
23019
+ changed = true;
23020
+ }
23021
+ if (changed) working = {
23022
+ ...working ?? {},
23023
+ mcpServers: servers
23024
+ };
23025
+ if (introduced.length > 0 || forgotten.length > 0) {
23026
+ const stale = (key) => forgotten.some((n) => key === SERVERS_PREFIX + n || isWrittenKeyOf(key, n)) || rewritten.some((n) => isWrittenKeyOf(key, n));
23027
+ const keys = [.../* @__PURE__ */ new Set([...(record?.keys ?? []).filter((key) => !stale(key)), ...introduced])];
23028
+ record = keys.length === 0 ? void 0 : {
23029
+ created: record?.created ?? trimmed?.created ?? current === void 0,
23030
+ keys
23031
+ };
23032
+ }
23033
+ const next = changed || working !== current ? working : main.next;
23034
+ return {
23035
+ next: next === current ? "same" : next,
23036
+ record,
23037
+ conflict: main.conflict,
23038
+ ...extraConflicts.length > 0 ? { extraConflicts } : {}
23039
+ };
23040
+ }
22887
23041
  /** Text written for an MCP file, following the existing file's line endings. */
22888
23042
  function renderMcpFile(content, previousText) {
22889
23043
  const text = `${JSON.stringify(content, null, 2)}\n`;
@@ -23565,10 +23719,16 @@ function renderAntigravityPlugin(input, policy) {
23565
23719
  name: ANTIGRAVITY_PLUGIN_NAME,
23566
23720
  description: ANTIGRAVITY_PLUGIN_MARKER
23567
23721
  })),
23568
- target(ANTIGRAVITY_MCP_CONFIG_PATH, json({ mcpServers: { [MCP_SERVER_NAME]: {
23569
- command: input.mcpLaunch.command,
23570
- args: [...input.mcpLaunch.args]
23571
- } } })),
23722
+ target(ANTIGRAVITY_MCP_CONFIG_PATH, json({ mcpServers: {
23723
+ [MCP_SERVER_NAME]: {
23724
+ command: input.mcpLaunch.command,
23725
+ args: [...input.mcpLaunch.args]
23726
+ },
23727
+ ...Object.fromEntries(usableExtensionServers(input.extensionServers ?? []).map((extra) => [extra.name, {
23728
+ command: extra.launch.command,
23729
+ args: [...extra.launch.args]
23730
+ }]))
23731
+ } })),
23572
23732
  target(ANTIGRAVITY_HOOKS_PATH, json(antigravityHooks())),
23573
23733
  target(ANTIGRAVITY_POLICY_PATH, renderPolicy(policy)),
23574
23734
  target(ANTIGRAVITY_HOOK_PATH, renderAntigravityHookScript(input.mcpLaunch))
@@ -23960,7 +24120,7 @@ function codexApprovalToml(policy) {
23960
24120
  * tools run without approval, and the hooks of the project (`renderCodexHooks`). Codex reads this
23961
24121
  * file only for a project marked as trusted, and runs the hooks once the creator approved them.
23962
24122
  */
23963
- function renderCodexConfig(launch, rules) {
24123
+ function renderCodexConfig(launch, rules, extensionServers = []) {
23964
24124
  const args = launch.args.map(tomlString).join(", ");
23965
24125
  const sandbox = rules?.sandboxMode ?? "workspace-write";
23966
24126
  const approval = codexApprovalToml(rules?.approvalPolicy ?? "on-request");
@@ -23968,6 +24128,7 @@ function renderCodexConfig(launch, rules) {
23968
24128
  const roots = sandbox === "workspace-write" ? rules?.writableRoots ?? [] : [];
23969
24129
  const section = [...rules?.networkAccess === true ? ["network_access = true"] : [], ...roots.length === 0 ? [] : [`writable_roots = [${roots.map(tomlString).join(", ")}]`]];
23970
24130
  const network = section.length === 0 ? "" : `\n[sandbox_workspace_write]\n${section.join("\n")}\n`;
24131
+ const extras = usableExtensionServers(extensionServers).map((extra) => `\n[mcp_servers.${extra.name}]\ncommand = ${tomlString(extra.launch.command)}\nargs = [${extra.launch.args.map(tomlString).join(", ")}]\ndefault_tools_approval_mode = "approve"\n`).join("");
23971
24132
  return `${GENERATED_HEADER_HASH}
23972
24133
  sandbox_mode = "${sandbox}"
23973
24134
  approval_policy = ${approval}
@@ -23976,7 +24137,7 @@ ${webSearch}${network}
23976
24137
  command = ${tomlString(launch.command)}
23977
24138
  args = [${args}]
23978
24139
  default_tools_approval_mode = "approve"
23979
-
24140
+ ${extras}
23980
24141
  ${renderCodexHooks()}`;
23981
24142
  }
23982
24143
  /**
@@ -24019,7 +24180,7 @@ function renderCodex(input) {
24019
24180
  }));
24020
24181
  targets.push({
24021
24182
  path: CODEX_CONFIG_PATH,
24022
- content: renderCodexConfig(input.mcpLaunch, input.codexRules),
24183
+ content: renderCodexConfig(input.mcpLaunch, input.codexRules, input.extensionServers),
24023
24184
  group: "codex"
24024
24185
  });
24025
24186
  return targets;
@@ -24035,6 +24196,54 @@ function renderSharedSkills(input) {
24035
24196
  return renderSkillFolders(input, SHARED_SKILLS_DIR, "shared");
24036
24197
  }
24037
24198
  //#endregion
24199
+ //#region ../../packages/core/dist/budget/call-rules.js
24200
+ /**
24201
+ * The pure rules of the guard before every tool call: which calls the team's pause holds, and the
24202
+ * words of a refusal. A refusal is one line: the cause in plain words, what the creator can do in
24203
+ * one gesture, and what the agent must not do. Never a command for the creator to type.
24204
+ */
24205
+ /** The prefix of the tools of the engine's own server: never refused (an agent must be able to conclude). */
24206
+ const OWN_TOOL_PREFIX = `mcp__${MCP_SERVER_NAME}__`;
24207
+ /** The tools a pause holds for an agent of a story: they write, run a command, or start an agent. */
24208
+ const PAUSE_HELD_TOOLS = /* @__PURE__ */ new Set([
24209
+ "Write",
24210
+ "Edit",
24211
+ "MultiEdit",
24212
+ "NotebookEdit",
24213
+ "Bash",
24214
+ "PowerShell",
24215
+ "Task",
24216
+ "Agent"
24217
+ ]);
24218
+ /** The tools that start an agent: held for every session, Noah's included. */
24219
+ const LAUNCH_TOOLS = /* @__PURE__ */ new Set(["Task", "Agent"]);
24220
+ /**
24221
+ * Whether the pause holds a call: an agent of a story (a sub-agent, or a session in the working
24222
+ * copy of a story) is held for every writing tool; the main session only for starting an agent, so
24223
+ * that Noah keeps talking and the creator keeps working in their own terminal.
24224
+ */
24225
+ function pauseHolds(tool, bound) {
24226
+ if (tool.startsWith(OWN_TOOL_PREFIX)) return false;
24227
+ return bound ? PAUSE_HELD_TOOLS.has(tool) : LAUNCH_TOOLS.has(tool);
24228
+ }
24229
+ /** Dollars as the creator reads them: `$2.00`. */
24230
+ function usdText(value) {
24231
+ return `$${value.toFixed(2)}`;
24232
+ }
24233
+ /** The refusal of a call while the team is paused. */
24234
+ function pausedMessage(reason) {
24235
+ return `AgentPlugged held this call: the team is ${reason === "emergency_stop" ? "stopped by the creator (emergency stop)" : "paused by the creator"}, so nothing new starts or is written. Read state.next if you need to see it, tell the coordinator you are held, then wait: the creator resumes everyone in one gesture. Do not work around it with another tool or command.`;
24236
+ }
24237
+ /**
24238
+ * The refusal of a call once the story reached its budget. `kind`: `pending` (the checkpoint waits
24239
+ * for the creator), `stopped` (the creator stopped the story at its budget) or `reached` (this call
24240
+ * is the one that found the ceiling gone over).
24241
+ */
24242
+ function budgetMessage(story, kind, ceiling) {
24243
+ const amount = ceiling?.usd === null || ceiling === void 0 ? "" : ` of ${usdText(ceiling.usd)}`;
24244
+ return `AgentPlugged stopped this call: ${kind === "stopped" ? `the creator stopped story ${story} at its budget${amount}` : `story ${story} reached its budget${amount}`}. ${kind === "stopped" ? "It goes on only once a sprint approved later takes it again." : "A checkpoint is open for the creator, who can raise the budget, let the story go on without one, or stop it, in one gesture from the web view or the phone."} Do not work around it with another tool or command: end with story.result partial and say what is left.`;
24245
+ }
24246
+ //#endregion
24038
24247
  //#region ../../packages/core/dist/trust/command-match.js
24039
24248
  /**
24040
24249
  * Whether a shell command falls under a high-risk rule, or fetches content from
@@ -24602,6 +24811,8 @@ function handler(command, fields, condition, timeout = HOOK_TIMEOUT) {
24602
24811
  timeout
24603
24812
  };
24604
24813
  }
24814
+ /** Every tool but those of the engine's own server (an agent held must still be able to conclude). */
24815
+ const CALL_HOOK_MATCHER = `^(?!${OWN_TOOL_PREFIX})`;
24605
24816
  /**
24606
24817
  * The file tools the guard before a write reads, each with the field of its input that
24607
24818
  * holds the path and the one that holds what is written (`MultiEdit`: the list of edits, which the
@@ -24652,6 +24863,15 @@ function claudeTrustHooks(rules, mainBranch) {
24652
24863
  cwd: hookValue("cwd")
24653
24864
  }, condition))
24654
24865
  });
24866
+ pre.push({
24867
+ matcher: CALL_HOOK_MATCHER,
24868
+ hooks: [handler("check_call", {
24869
+ tool: hookValue("tool_name"),
24870
+ session,
24871
+ cwd: hookValue("cwd"),
24872
+ agent: hookValue("agent_type")
24873
+ }, void 0, 5)]
24874
+ });
24655
24875
  for (const { tool, path, text } of WRITE_TOOLS) pre.push({
24656
24876
  matcher: tool,
24657
24877
  hooks: [handler("check_write", {
@@ -25103,7 +25323,7 @@ const syncCommand = defineCommand({
25103
25323
  * Generates the files of the targeted AI tools (the `tools` list of `method.yaml`) from
25104
25324
  * `.agentplugged/agents/` and `.agentplugged/skills/`.
25105
25325
  */
25106
- async run({ files, tools: probe, method, platform, mainBranch, projectRoot }, options) {
25326
+ async run({ files, tools: probe, method, platform, mainBranch, projectRoot, extensionServers }, options) {
25107
25327
  if (!await files.exists(".agentplugged/method.yaml")) return fail(methodNotInstalled());
25108
25328
  if (options.clean_gemini === true) return ok(await cleanLegacyGemini(files, options.yes === true));
25109
25329
  const loaded = await loadMethodConfig(files);
@@ -25193,6 +25413,7 @@ const syncCommand = defineCommand({
25193
25413
  models,
25194
25414
  mcpLaunch: launch,
25195
25415
  engineCommand: engine,
25416
+ ...extensionServers === void 0 ? {} : { extensionServers },
25196
25417
  codexRules: {
25197
25418
  ...codexRuleSettings(resolvedRules.rules, validation.mode === "strict"),
25198
25419
  ...worktreesFolder === void 0 ? {} : { writableRoots: [worktreesFolder] }
@@ -25231,8 +25452,9 @@ const syncCommand = defineCommand({
25231
25452
  const previous = manifest.settings?.[file.path];
25232
25453
  if (!targeted && previous === void 0) continue;
25233
25454
  const current = mcpFiles.get(file.path);
25234
- const outcome = reconcileMcpFile(file, current?.value, targeted, launch, previous);
25455
+ const outcome = reconcileMcpFile(file, current?.value, targeted, launch, previous, extensionServers ?? []);
25235
25456
  if (outcome.record) settingsRecords[file.path] = outcome.record;
25457
+ if ((outcome.extraConflicts?.length ?? 0) > 0) plan.warn("conflict", file.path);
25236
25458
  if (outcome.conflict) {
25237
25459
  plan.warn("conflict", file.path);
25238
25460
  mcpConflicts.set(file.client, file.path);
@@ -25564,7 +25786,7 @@ function groupOf(path) {
25564
25786
  * (`report_status`), records the creator's answers (`answer_checkpoint`, or `ask_creator` in the
25565
25787
  * AI tool's form), presents the checkpoints that wait as one stack and records the
25566
25788
  * answer (`open_stack`, `ask_stack`, `answer_stack`), hands work over
25567
- * (`delegate`), reports what he read outside (`record_external_read`) and asks the creator for an
25789
+ * (`delegate`), holds the team once the creator agreed (`pause_team`), reports what he read outside (`record_external_read`) and asks the creator for an
25568
25790
  * action reserved to them, such as creating an agent (`request_creator_action`), and asks the
25569
25791
  * engine to measure what the sessions consumed (`measure_usage`), and to read the state of
25570
25792
  * the machine (`check_environment`). He
@@ -25584,6 +25806,8 @@ const NOAH_COMMANDS = /* @__PURE__ */ new Set([
25584
25806
  "ask_stack",
25585
25807
  "answer_stack",
25586
25808
  "delegate",
25809
+ "summarize",
25810
+ "pause_team",
25587
25811
  "record_external_read",
25588
25812
  "request_creator_action",
25589
25813
  "measure_usage",
@@ -31649,6 +31873,36 @@ const DELEGATION_REDUCERS = { [DELEGATION_EVENT_TYPES.delegated]: (draft, event)
31649
31873
  }
31650
31874
  } };
31651
31875
  //#endregion
31876
+ //#region ../../packages/core/dist/projection/exchange-reducers.js
31877
+ /** The notes of the projection, in order (an empty list when there are none). */
31878
+ function exchangesOf(state) {
31879
+ return state.exchanges ?? [];
31880
+ }
31881
+ /**
31882
+ * The reducers of the exchange notes: only Noah writes them (another actor's note is ignored as
31883
+ * `invalid`), and the projection keeps the latest `EXCHANGES_KEPT`. A note identical to the one
31884
+ * before it changes nothing, so a session that writes its note twice leaves one.
31885
+ */
31886
+ const EXCHANGE_REDUCERS = { [EXCHANGE_EVENT_TYPES.summarized]: (draft, event) => {
31887
+ if (event.actor.kind !== "agent" || event.actor.agent !== "noah") {
31888
+ draft.ignored.push({
31889
+ id: event.id,
31890
+ reason: "invalid"
31891
+ });
31892
+ return;
31893
+ }
31894
+ const { summary } = event.payload;
31895
+ const list = exchangesOf(draft.state);
31896
+ if (list[list.length - 1]?.summary === summary) return;
31897
+ list.push({
31898
+ id: event.id,
31899
+ at: event.at,
31900
+ summary,
31901
+ provenance: event.provenance === "untrusted" ? "untrusted" : "trusted"
31902
+ });
31903
+ draft.state.exchanges = list.slice(-30);
31904
+ } };
31905
+ //#endregion
31652
31906
  //#region ../../packages/core/dist/projection/fast-track-reducers.js
31653
31907
  /**
31654
31908
  * The reducers of a story's fast track. `story.fast_track_entered` is the mode
@@ -34754,6 +35008,52 @@ const TABLE_REDUCERS = {
34754
35008
  }
34755
35009
  };
34756
35010
  //#endregion
35011
+ //#region ../../packages/core/dist/projection/team-reducers.js
35012
+ /**
35013
+ * The reducers of the team's pause. A pause is opened and closed by the machine that serves the
35014
+ * product (`system`: the creator's gesture from a device), by the creator (`human`), or by Noah when
35015
+ * the creator asked him in the chat of their tool. Any other agent cannot hold the team: its event
35016
+ * is ignored (`invalid`). A second pause while one is open, or a resumption with none open, changes
35017
+ * nothing.
35018
+ */
35019
+ function mayHold(event) {
35020
+ if (event.actor.kind === "system" || event.actor.kind === "human") return true;
35021
+ return actingAgent(event) === NOAH_AGENT;
35022
+ }
35023
+ const TEAM_REDUCERS = {
35024
+ [TEAM_EVENT_TYPES.paused]: (draft, event) => {
35025
+ if (!mayHold(event)) {
35026
+ draft.ignored.push({
35027
+ id: event.id,
35028
+ reason: "invalid"
35029
+ });
35030
+ return;
35031
+ }
35032
+ if (draft.state.team?.paused === true) return;
35033
+ const { reason } = event.payload;
35034
+ draft.state.team = {
35035
+ paused: true,
35036
+ since: event.at,
35037
+ reason,
35038
+ event: event.id
35039
+ };
35040
+ },
35041
+ [TEAM_EVENT_TYPES.resumed]: (draft, event) => {
35042
+ if (!mayHold(event)) {
35043
+ draft.ignored.push({
35044
+ id: event.id,
35045
+ reason: "invalid"
35046
+ });
35047
+ return;
35048
+ }
35049
+ if (draft.state.team?.paused !== true) return;
35050
+ draft.state.team = {
35051
+ paused: false,
35052
+ resumed_at: event.at
35053
+ };
35054
+ }
35055
+ };
35056
+ //#endregion
34757
35057
  //#region ../../packages/core/dist/projection/trust-reducers.js
34758
35058
  /** The reducers of untrusted content: the reads, in projection order. */
34759
35059
  const TRUST_REDUCERS = { [SESSION_EVENT_TYPES.externalRead]: (draft, event) => {
@@ -34973,6 +35273,8 @@ const REDUCERS = withMergeFeedback({
34973
35273
  ...CRITERION_REDUCERS,
34974
35274
  ...QA_REDUCERS,
34975
35275
  ...LOOP_REDUCERS,
35276
+ ...TEAM_REDUCERS,
35277
+ ...EXCHANGE_REDUCERS,
34976
35278
  ...MERGE_ORDER_REDUCERS,
34977
35279
  ...MEMORY_REDUCERS,
34978
35280
  ...STACK_REDUCERS,
@@ -35759,6 +36061,7 @@ async function computeProjectionDetailed(events, options = {}) {
35759
36061
  for (const entry of entries) if (entry.parent !== void 0) draft.parents.set(entry.event.id, entry.parent.event.id);
35760
36062
  let applied = 0;
35761
36063
  let unreadable = 0;
36064
+ const extensionEvents = [];
35762
36065
  let computedAt = null;
35763
36066
  const apply = (event) => {
35764
36067
  applied += 1;
@@ -35801,6 +36104,16 @@ async function computeProjectionDetailed(events, options = {}) {
35801
36104
  const reached = draft.state.format?.version;
35802
36105
  if (reached !== void 0 && reached > aliasFormat) aliasFormat = reached;
35803
36106
  if (!draft.ignored.slice(refused).some((item) => item.id === entry.event.id) && !draft.held.has(entry.event.id)) apply(entry.event);
36107
+ const module = extensionModuleOf(current.type);
36108
+ if (module !== void 0 && current.payload !== void 0 && entry.event.payload_enc !== void 0) extensionEvents.push({
36109
+ id: current.id,
36110
+ type: current.type,
36111
+ module,
36112
+ at: current.at,
36113
+ actor: current.actor,
36114
+ ...current.story === void 0 ? {} : { story: current.story },
36115
+ payload: current.payload
36116
+ });
35804
36117
  for (const event of draft.released.slice(released)) apply(event);
35805
36118
  }
35806
36119
  settleHeldResolutions(draft);
@@ -35825,6 +36138,7 @@ async function computeProjectionDetailed(events, options = {}) {
35825
36138
  state: draft.state
35826
36139
  },
35827
36140
  unreadable,
36141
+ extensionEvents,
35828
36142
  ...trust === void 0 ? {} : { deviceTrust: trust.view }
35829
36143
  };
35830
36144
  }
@@ -36285,6 +36599,12 @@ function checkDraft(draft, key, journalProduct, allowTestTypes) {
36285
36599
  if (HUMAN_ONLY_EVENT_TYPES.has(draft.type)) throw thrown$1(eventInvalid("type", EVENT_REASON.humanOnly));
36286
36600
  if (DEVICE_TRUST_SYSTEM_EVENT_TYPES.has(draft.type) && draft.actor.kind !== "system") throw thrown$1(eventInvalid("actor.kind", EVENT_REASON.reservedType));
36287
36601
  if (isTestEventType(draft.type) && !allowTestTypes) throw thrown$1(eventInvalid("type", EVENT_REASON.testType));
36602
+ if (isExtensionEventType(draft.type)) {
36603
+ if (version !== void 0 && version !== 1) throw thrown$1(eventInvalid("v", EVENT_REASON.invalidValue));
36604
+ if (draft.actor.device !== void 0 && draft.actor.device !== key.device) throw thrown$1(eventInvalid("actor.device", EVENT_REASON.invalidValue));
36605
+ if (journalProduct !== draft.product) throw productIdMismatch(draft.product, journalProduct);
36606
+ return;
36607
+ }
36288
36608
  const upgrade = eventTypeUpgrade(draft.type, version ?? eventTypeSpec(draft.type)?.version ?? 1);
36289
36609
  if (upgrade !== void 0) throw thrown$1(upgrade);
36290
36610
  const spec = eventTypeSpec(draft.type);
@@ -37624,6 +37944,13 @@ const leaveFastTrackCommand = agentEventCommand({
37624
37944
  check: (input, state) => leaveProblem(state, input.story, input.agent)
37625
37945
  });
37626
37946
  //#endregion
37947
+ //#region ../../packages/core/dist/team/team-rules.js
37948
+ /** The open pause of the team, or undefined when the team is free to work. */
37949
+ function openPause(state) {
37950
+ const team = state.team;
37951
+ return team?.paused === true ? team : void 0;
37952
+ }
37953
+ //#endregion
37627
37954
  //#region ../../packages/core/dist/stories/commit-hook.js
37628
37955
  /**
37629
37956
  * The commit hook of story branches. `commit-msg` is a `sh` script that runs the hook
@@ -38252,6 +38579,7 @@ async function startStory(context, id, starter, fast) {
38252
38579
  const documents = await readSprintStories(context.files);
38253
38580
  const document = documents.get(id);
38254
38581
  if (view.done(id)) return notStartable(id, "done");
38582
+ if (starter.kind === "agent" && openPause(state) !== void 0) return notStartable(id, "team_paused");
38255
38583
  const started = view.story?.started;
38256
38584
  if (started !== void 0) {
38257
38585
  if (fast !== void 0 && view.story?.fast_track?.status !== "active" && starter.kind === "agent" && currentDeveloper(starter.agent) === currentDeveloper(started.agent)) return fastTrackNotPossible(id, view.story?.fast_track === void 0 ? "already_started" : "already_left");
@@ -50910,6 +51238,7 @@ function summarizeState(full) {
50910
51238
  session_trusted: full.session.trusted,
50911
51239
  open_questions: full.open_points.length,
50912
51240
  sprint: sprint === null ? null : `${sprint.id} · ${sprint.status} · ${text(sprint.goal)} · ${sprint.stories.map((entry) => `${entry.id} ${entry.status}`).join(", ")}`,
51241
+ ...full.exchanges.length === 0 ? {} : { exchanges: full.exchanges.slice(-3).map((entry) => `${entry.at.slice(0, 16)}${entry.provenance === "untrusted" ? " · untrusted" : ""} · ${entry.summary.replace(/\s+/g, " ")}`) },
50913
51242
  deferred_open: full.deferred.open.length,
50914
51243
  deviations_open: full.deviations.open.length,
50915
51244
  ...full.requirements === void 0 ? {} : { requirements: full.requirements },
@@ -51298,6 +51627,14 @@ function abridgeState(full, limits) {
51298
51627
  read: { delegations: {} },
51299
51628
  note: "the latest handovers are shown, their brief cut: read a page with `delegations`"
51300
51629
  });
51630
+ const exchanges = full.exchanges.slice(Math.max(0, full.exchanges.length - limits.delegations));
51631
+ if (exchanges.length < full.exchanges.length) note({
51632
+ section: "exchanges",
51633
+ shown: exchanges.length,
51634
+ total: full.exchanges.length,
51635
+ omitted: full.exchanges.length - exchanges.length,
51636
+ note: "the latest notes of an exchange are shown"
51637
+ });
51301
51638
  const deferredOpen = full.deferred.open.slice(0, limits.register).map((item) => ({
51302
51639
  ...item,
51303
51640
  detail: item.detail === null ? null : cuts.cut(item.detail, limits.text)
@@ -51367,6 +51704,7 @@ function abridgeState(full, limits) {
51367
51704
  return {
51368
51705
  clock: full.clock,
51369
51706
  delegations,
51707
+ exchanges,
51370
51708
  product: full.product,
51371
51709
  journal_head: full.journal_head,
51372
51710
  agents,
@@ -52410,7 +52748,8 @@ const getStateCommand = defineCommand({
52410
52748
  validation: await validationView(context, loaded.config, Object.values(checkpoints)),
52411
52749
  stacks: stacksView(state, now),
52412
52750
  installs: await installsView(context, loaded.config, state),
52413
- delegations: delegationsOf(state).map((entry) => ({ ...entry }))
52751
+ delegations: delegationsOf(state).map((entry) => ({ ...entry })),
52752
+ exchanges: exchangesOf(state).map((entry) => ({ ...entry }))
52414
52753
  };
52415
52754
  const cursor = parsed.data.checkpoints?.before;
52416
52755
  if (cursor !== void 0 && !Object.hasOwn(full.checkpoints, cursor)) return fail(unknownOption("checkpoints.before", cursor));
@@ -52520,4 +52859,4 @@ const agentActivityCommands = [
52520
52859
  getStateCommand
52521
52860
  ];
52522
52861
  //#endregion
52523
- export { deferredAgentCommands as $, SYNC_MANIFEST_PATH as $a, keptObjections as $c, recordDigest as $i, normalizeText as $l, checkCreate as $n, costOf$1 as $o, writingKey as $r, silentOf as $s, fileBinding as $t, MODELS_PATH as $u, invalidField as A, roleForbidden as Aa, tracedStoryStatus as Ac, encryptedFileKeyId as Ad, findingRefs as Ai, sprintStories as Al, isEngineUpdatePoint as An, isRecord as Ao, ciUnavailable as Ar, CI_CONFIG_PATHS as As, conflictSummary as At, truncate as Au, readSprintStories as B, matchesAny as Ba, standingOf as Bc, stackText as Bi, reviewsSince as Bl, notReserved as Bn, ruleLocked as Bo, journalProduct as Br, isStoryDeveloper as Bs, isCodePath as Bt, waiverDeadlineProblem as Bu, UNKNOWN_DIGEST as C, readScope as Ca, remoteLocation as Cc, CODEX_UNCHECKED_REASON as Cd, openConflict as Ci, isTestPath$1 as Cl, runFix as Cn, writeGitWorkflow as Co, COMMIT_STORIES_DIR as Cr, DECISION_FORM_FIELDS as Cs, takePendingMerge as Ct, KNOWLEDGE_BASE_INDEX_PATH as Cu, requirementAgentCommands as D, ok as Da, traceRequirement as Dc, normalizeChatText as Dd, changeFiles as Di, currentSprint as Dl, engineTargetOf as Dn, readShippedTable as Do, syncLateNotices as Dr, readReply as Ds, queueOrder as Dt, pointsView as Du, itemOf as E, fail as Ea, statusCounts as Ec, messageDigest as Ed, changeFacts as Ei, storyIn$2 as El, engineUpdateRecordOf as En, parseModelTable as Eo, noticeBranchOf as Er, formDigest as Es, mergeWaits as Et, delegationVerdict as Eu, journeyView as F, commandForms as Fa, openDeviations as Fc, ANTIGRAVITY_POLICY_PATH as Fd, lensDiff as Fi, ARCHITECTURE_SECURITY_REVIEW_PATH as Fl, contentPreview as Fn, DEFAULT_RULES as Fo, createUlidFactory as Fr, isWorkflowFile as Fs, weightDrift as Ft, liftsBlocks as Fu, readMockupFiles as G, renderCodexHooks as Ga, critiqueOffer as Gc, approved as Gi, parseMethodConfig as Gl, parseCommandLine as Gn, toolCallOf as Go, adoptRotatedKey as Gr, passNumberFor as Gs, lessonFileIds as Gt, unexpected as Gu, docsCommand as H, scriptParts as Ha, critiquable as Hc, validateLensReports as Hi, editedMethodText as Hl, proofCommandLine as Hn, provideToolManual as Ho, prepareAppend as Hr, openMergeCheckpoint as Hs, isTestPath as Ht, waiverRefusal as Hu, gitView as I, commandMatches as Ia, storyDeveloper as Ic, ANTIGRAVITY_UNCHECKED_REASON as Id, lensDiffPathOf as Ii, SECURITY_REVIEWER as Il, creatorActionCheckpoint as In, allowedValues as Io, newUlid as Ir, mergeHold as Is, duplicateFindings as It, parseWaiverAnswer as Iu, usageSessionsOf as J, GEMINI_MD_PATH as Ja, documentRisk as Jc, lessonRecord as Ji, writeEngineVersion as Jl, contentProblem as Jn, SKILL_OVERRIDES_DIR as Jo, productKeyById as Jr, reviewLoopReached as Js, readCommonEntry as Jt, METHOD_CONFIG_PATH as Ju, researchLines as K, CLAUDE_SETTINGS_PATH as Ka, critiqueStack as Kc, batchesOf as Ki, renderMethodConfig as Kl, parseDeclaredLine as Kn, toolNotation as Ko, announcedKey as Kr, passOutcome as Ks, memoryInvalid as Kt, resolveValidationSettings as Ku, criteriaTrace as L, engineCommandOnly as La, commandsToAccept as Lc, creatorText as Ld, mergeLensReports as Li, designSecurityReviewGap as Ll, creatorActionSummary as Ln, isRuleAction as Lo, checkHumanEvents as Lr, storyCiStatus as Ls, isReuseReport as Lt, resolutionProblem$1 as Lu, isValidatedPublication as M, activeDefinitions as Ma, deviationResolutionProblem as Mc, canonicalBytes as Md, isDocumentPath$1 as Mi, storyDoneAt as Ml, updateAvailableOf as Mn, constitutionTarget as Mo, readSource as Mr, ciGreen as Ms, parseConflictMarkers as Mt, CREATOR_ACTION_DECISIONS as Mu, sentBackPublications as N, loadDefinitions as Na, findDeviation as Nc, eventHash as Nd, isLockfile as Ni, validatedStories as Nl, MAX_CHECKPOINT_SUMMARY as Nn, renderConstitution as No, sessionTrust as Nr, existingCi as Ns, storyWeight as Nt, answerable as Nu, readRegistry as O, checkEngine as Oa, traceSummaries as Oc, decryptFile as Od, chooseLenses as Oi, latestSprint as Ol, engineUpdateOf as On, renderModelsFile as Oo, branchHead as Or, withNote as Os, CONFLICT_OPTION_TEXT as Ot, byOpening as Ou, withoutHeader as P, syncCommand as Pa, openDeviation as Pc, deviceIdMatchesKey as Pd, isSensitiveChange as Pi, ARCHITECTURE_PATH as Pl, actionStory as Pn, renderConstitutionReferenceFiles as Po, usableId as Pr, heldMergeCheckpoint as Ps, weighedStoriesOf as Pt, blocksInForce as Pu, currentState as Q, withEngineCommand as Qa, ideaOffer as Qc, promotionSummary as Qi, isGenerated as Ql, agentCommand as Qn, overrideCostWithFiles as Qo, sensitiveProductKey as Qr, sensitivePath as Qs, checkSensitivePath as Qt, METHOD_SUBDIRS as Qu, unprovenCriteria as R, isEngineCommand as Ra, proofDecisions as Rc, isReopenable as Rd, planReaders as Ri, isBlobOf as Rl, isCreatorActionKind as Rn, isRuleValue as Ro, localeSigner as Rr, currentPass as Rs, reuseLines as Rt, reviewActions as Ru, resolveInstallSettings as S, outgrown as Sa, isRepositoryPullRequest as Sc, CODEX_POLICY_PATH as Sd, conflictNote as Si, MAX_CANDIDATE_LINES as Sl, isAutomatic as Sn, validateGitWorkflow as So, COMMIT_SKIPS_PATH as Sr, readMachineKey as Ss, removeMergedWorktree as St, skippedWithItsPhase as Su, invalid as T, defineCommand as Ta, measureResult as Tc, codexSessionIdOf as Td, isMergeCheckpoint as Ti, storiesIn as Tl, readDoctorCatalog as Tn, inheritClients as To, storyFiles as Tr, decisionPrompt as Ts, filesByStory as Tt, delegationOf as Tu, knownOwners as U, subcommands as Ua, critiqueById as Uc, activeLessonIds as Ui, loadMethodConfig as Ul, isSecretVariable as Un, publishedShape as Uo, prepareEngineEvents as Ur, parseDiff as Us, sourceWords as Ut, AgentPluggedError as Uu, DOCUMENT_PATHS as V, patternOf as Va, correctionLines as Vc, validateJudge as Vi, parseDocumentFile as Vl, terminalCommand as Vn, inputShapeOf as Vo, nextDeviceHead as Vr, needsSecurity as Vs, isReadableCode as Vt, waiverExpired as Vu, readDocumentFiles as W, CODEX_CONFIG_PATH as Wa, critiqueOfDocument as Wc, anchorsOf as Wi, methodConfigInvalid as Wl, lineForCriterion as Wn, TOOL_GROUPS as Wo, productIdMismatch as Wr, passComplete as Ws, isReservedMemoryPath as Wt, unavailable$1 as Wu, SPEC_PATH as X, engineCommand as Xa, hypothesesOf as Xc, memoryOf as Xi, GENERATED_HEADER as Xl, isFileAction as Xn, isPersonalLayerFile as Xo, projectionKey as Xr, reviewVerdictOf as Xs, writeCommonEntry as Xt, METHOD_DIR as Xu, usageView as Y, syncInputsFingerprint as Ya, hypothesesDue as Yc, lessonStatuses as Yi, writeTools as Yl, dryRunFileAction as Yn, checkSkillOverrideRequest as Yo, productKeyMissing as Yr, reviewOf as Ys, readLessonFile as Yt, METHOD_CONSTITUTION_PATH as Yu, countSpec as Z, mcpLaunch as Za, hypothesisById as Zc, overflows as Zi, GENERATED_HEADER_HASH as Zl, AGENT_ACTIONS as Zn, loadSkillLayers as Zo, readHeldProductKey as Zr, securityReasons as Zs, writeLessonFile as Zt, METHOD_GITIGNORE_PATH as Zu, lines as _, budgetThresholdsOf as _a, openCourse as _c, CURSOR_UNCHECKED_REASON as _d, stackPromptDigest as _i, staleKnowledgeStories as _l, environmentChecks as _n, writePermissionMode as _o, storyJournalView as _r, deferredView as _s, mergedEvent as _t, isPresetId as _u, invalidInput as a, scopeStatus as aa, looksLikeProof as ac, chatHookPath as ad, tableOffer as ai, validateClose as al, executionProblem as an, detectTools as ao, bodySize as ar, AGENT_OVERRIDES_DIR as as, installHumanKey as at, documentOwner as au, approvedArchitecture as b, isPositioning as ba, forgeOfHost as bc, CODEX_HOOK_DEFINITIONS as bd, judgedKey as bi, criterionStatus as bl, answerProblem as bn, writeValidationMode as bo, COMMIT_HOOK_LINE as br, keychainFull as bs, notePendingMerge as bt, skippedPhases as bu, project as c, attemptsView as ca, safeObserved as cc, isCodexClient as cd, validateRecall as ci, validateSettle as cl, forgeRecordOf as cn, profileCommand as co, validateCreateField as cr, isDeveloper as cs, reviewNotInteractive as ct, STORY_BUILDERS as cu, measureProduct as d, loopVerdict as da, computeImpact as dc, matchQuote as dd, readStackReply as di, wasOffered as dl, JOURNAL_REMOTE_NAME as dn, validateInstallMode as do, oneLine$1 as dr, parseDefinition as ds, writeHuman as dt, isDocumentReview as du, refusedRetro as ea, stackEntriesOf as ec, POINTER_FILES as ed, computeProjection as ei, mentionsSensitiveData as el, workspacePath as en, loadManifest as eo, knownIds as er, overlap as es, deferredCommand as et, pointerStyleOf as eu, journalFacts as f, parseHypothesis as fa, courseById as fc, proofSessionOf as fd, selectionOutsideStack as fi, blobIdsOf as fl, JournalBackup as fn, validatePermissionMode as fo, openPullRequestCommand as fr, readDefinitions as fs, installProductKey as ft, openDocumentReview as fu, count as g, turnEvent as ga, leftLines as gc, CURSOR_POLICY_PATH as gd, stackPrompt as gi, staleKnowledgeSources as gl, diagnoseFailure as gn, writeInstallMode as go, storyCommand as gr, deferredLocks as gs, mergeStory as gt, inactiveAgents as gu, antigravityTraceInfo as h, tryProblem as ha, handoffs as hc, CURSOR_HOOK_NAME as hd, stackProblem as hi, pathKey as hl, FailureSchema as hn, validateValidationMode as ho, startStoryCommand as hr, checkpointsOf as hs, mergeFailed as ht, DEFAULT_PRESET as hu, defined as i, scopeFinished as ia, untriagedFindings as ic, chatClientOf as id, tableCandidate as ii, refsOf as il, executionEvent as in, toolsFromDetection as io, analyze as ir, TOOL_CATALOG as is, humanTarget as it, currentDeveloper as iu, isPublication as j, activeAgentNames as ja, agentMayResolve as jc, wipeBytes as jd, findingSeverities as ji, sprintsOf as jl, maybeAutoUpdate as jn, isStrings as jo, AgentSession as jr, GITHUB_WORKFLOWS_DIR as js, forcedFiles as jt, ACTION_DECISIONS as ju, decodeStrict as k, compareSemver as ka, tracedRequirements as kc, encryptFile as kd, creatorStack as ki, sprintStatus as kl, installAndPin as kn, planShippedCopy as ko, checkCiCommand as kr, skipWarning as ks, analyseConflict as kt, checkpointPayload as ku, projectWithKey as l, hypothesisProblem as la, fastTrackHold as lc, isCursorClient as ld, stacksOf as li, validateShow as ll, isForgeAction as ln, readProfile as lo, recordGitWorkflow as lr, SKILL_FILE as ls, trustProblem as lt, activePhases as lu, antigravityPlace as m, triedLines as ma, courseNote as mc, sameProject as md, stackItems as mi, mergedStoriesOf as ml, environmentFixRecordOf as mn, validateProfile as mo, parallelLimitProblem as mr, settledPoints as ms, afterMerge as mt, refusedDocumentReview as mu, agentEventCommand as n, retroSummary as na, storyReviewDone as nc, decisionChannels as nd, gestureOwner as ni, openStack as nl, afterExecution as nn, CURSOR_RULE_PATH as no, buildFromContent as nr, displayName as ns, datedAfter as nt, RENAMED_AGENTS as nu, planSprintCommand as o, targetsOf as oa, qaLine as oc, citedKey as od, validateClosing as oi, validateCritiqueReport as ol, executionStateProblem as on, resolveRules as oo, verify as or, loadOverrides as os, keyCommand as ot, isRetiredDeveloper as ou, antigravityModelAt as p, ruledOutLines as pa, courseIsCoherent as pc, refOf as pd, stackField as pi, knowledgePagesOf as pl, syncJournal as pn, validatePoints as po, targetBranch as pr, reasonHolds as ps, mergeHead as pt, phaseProgress as pu, costsLines as q, parsePolicy as qa, deliveredAfter as qc, dueScopes as qi, stringifyMethodDocument as ql, runsCriteria as qn, withToolNotation as qo, forgetProductKey as qr, refutedOf as qs, openCommonKey as qt, methodSection as qu, agentWriteContext as r, retrosOf as ra, unpublishedKinds as rc, isDecisionHook as rd, isDocsPath as ri, passageFound as rl, currentRisk as rn, targetedTools as ro, definitionDir as rr, toolName as rs, humanKeyMissing as rt, RETIRED_DEVELOPERS as ru, planned as s, attemptLimitCheckpoint as sa, reportProblems as sc, isAntigravityClient as sd, validateProposal as si, validateProposal$1 as sl, higherRisk as sn, methodNotInstalled as so, invalidArgument as sr, overridePath as ss, reviewCommand as st, PHASE_CLOSERS as su, agentActivityCommands as t, retroOfCheckpoint as ta, stackEntryOf as tc, ROOT_CONSTITUTION_PATH as td, computeProjectionDetailed as ti, normalizedPath as tl, actionUnchanged as tn, fallbacksFor as to, workshopKnown as tr, significantWords as ts, verified as tt, withPointerBlock as tu, provenanceOf as u, loopStateOf as ua, checkCourse as uc, isHookedClient as ud, parseStackReply as ui, versionsOf as ul, resolvePullRequestSettings as un, resolveProfile as uo, deliveryRemote as ur, definitionFolders as us, trustedCreator as ut, approvedAt as uu, readClaudeTranscript as v, checkDocuments as va, validateDecisions as vc, CURSOR_UNREADABLE_REASON as vd, stackPromptItem as vi, validatedVersions as vl, evaluateChecks as vn, writePoints as vo, CHAINED_HOOK_NAME as vr, openDeferred as vs, mergesOn as vt, documentProblemIsWarning as vu, citingTests as w, CommandRegistry as wa, repositoryWebUrl as wc, codexHookCommands as wd, refreshedMergeSummary as wi, testReferences as wl, withAnswers as wn, effectiveTable as wo, leaveFastTrackCommand as wr, canonicalJson as ws, currentOrder as wt, deciderFor as wu, plannedDependencies as x, blockOf$1 as xa, forgeRepositoryOf as xc, CODEX_HOOK_NAME as xd, readinessOf as xi, missingLine as xl, displayCommand as xn, repositoryOnForge as xo, COMMIT_HOOK_NAME as xr, loadMachineKey as xs, pendingMergeOf as xt, skippedSteps as xu, skillNameOf as y, POSITIONING_PATH as ya, forgeCli as yc, cursorSessionIdOf as yd, isJudgedKey as yi, storiesOf as yl, runDoctor as yn, writeProfile as yo, COMMIT_CHECK_PATH as yr, loadHumanKey as ys, notRecorded as yt, isSkipped as yu, storyText as z, isNetworkCommand as za, proofRequestOpen as zc, pointKindOf as zd, readerPasses as zi, readWorkingBytes as zl, journalActionProblem as zn, lockOf as zo, deviceHeads as zr, findFinding as zs, reuseOf as zt, statusAt as zu };
52862
+ export { SPEC_PATH as $, renderCodexHooks as $a, critiqueOffer as $c, lessonStatuses as $i, parseMethodConfig as $l, isFileAction as $n, toolCallOf as $o, productKeyMissing as $r, passNumberFor as $s, writeCommonEntry as $t, unexpected as $u, readRegistry as A, fail as Aa, isRepositoryPullRequest as Ac, CODEX_POLICY_PATH as Ad, changeFacts as Ai, MAX_CANDIDATE_LINES as Al, engineTargetOf as An, validateGitWorkflow as Ao, noticeBranchOf as Ar, readMachineKey as As, queueOrder as At, skippedWithItsPhase as Au, unprovenCriteria as B, commandMatches as Ba, deviationResolutionProblem as Bc, canonicalBytes as Bd, lensDiffPathOf as Bi, storyDoneAt as Bl, creatorActionSummary as Bn, constitutionTarget as Bo, newUlid as Br, ciGreen as Bs, isReuseReport as Bt, CREATOR_ACTION_DECISIONS as Bu, plannedDependencies as C, POSITIONING_PATH as Ca, handoffs as Cc, CURSOR_HOOK_NAME as Cd, isJudgedKey as Ci, pathKey as Cl, answerProblem as Cn, validateValidationMode as Co, COMMIT_HOOK_LINE as Cr, checkpointsOf as Cs, notePendingMerge as Ct, DEFAULT_PRESET as Cu, invalid as D, readScope as Da, forgeCli as Dc, cursorSessionIdOf as Dd, openConflict as Di, storiesOf as Dl, withAnswers as Dn, writeProfile as Do, openPause as Dr, loadHumanKey as Ds, currentOrder as Dt, isSkipped as Du, citingTests as E, outgrown as Ea, validateDecisions as Ec, CURSOR_UNREADABLE_REASON as Ed, conflictNote as Ei, validatedVersions as El, runFix as En, writePoints as Eo, COMMIT_STORIES_DIR as Er, openDeferred as Es, takePendingMerge as Et, documentProblemIsWarning as Eu, sentBackPublications as F, activeAgentNames as Fa, traceRequirement as Fc, normalizeChatText as Fd, findingSeverities as Fi, currentSprint as Fl, updateAvailableOf as Fn, readShippedTable as Fo, AgentSession as Fr, readReply as Fs, parseConflictMarkers as Ft, pointsView as Fu, knownOwners as G, patternOf as Ga, commandsToAccept as Gc, creatorText as Gd, validateJudge as Gi, designSecurityReviewGap as Gl, proofCommandLine as Gn, isRuleAction as Go, nextDeviceHead as Gr, storyCiStatus as Gs, isTestPath as Gt, resolutionProblem$1 as Gu, readSprintStories as H, isEngineCommand as Ha, openDeviation as Hc, deviceIdMatchesKey as Hd, planReaders as Hi, ARCHITECTURE_PATH as Hl, journalActionProblem as Hn, renderConstitutionReferenceFiles as Ho, localeSigner as Hr, heldMergeCheckpoint as Hs, reuseOf as Ht, blocksInForce as Hu, withoutHeader as I, activeDefinitions as Ia, traceSummaries as Ic, decryptFile as Id, isDocumentPath$1 as Ii, latestSprint as Il, MAX_CHECKPOINT_SUMMARY as In, renderModelsFile as Io, readSource as Ir, withNote as Is, storyWeight as It, byOpening as Iu, researchLines as J, OWN_TOOL_PREFIX as Ja, standingOf as Jc, anchorsOf as Ji, reviewsSince as Jl, parseCommandLine as Jn, ruleLocked as Jo, productIdMismatch as Jr, isStoryDeveloper as Js, lessonFileIds as Jt, waiverDeadlineProblem as Ju, readDocumentFiles as K, scriptParts as Ka, proofDecisions as Kc, isReopenable as Kd, validateLensReports as Ki, isBlobOf as Kl, isSecretVariable as Kn, isRuleValue as Ko, prepareAppend as Kr, currentPass as Ks, sourceWords as Kt, reviewActions as Ku, journeyView as L, loadDefinitions as La, tracedRequirements as Lc, encryptFile as Ld, isLockfile as Li, sprintStatus as Ll, actionStory as Ln, planShippedCopy as Lo, sessionTrust as Lr, skipWarning as Ls, weighedStoriesOf as Lt, checkpointPayload as Lu, invalidField as M, checkEngine as Ma, repositoryWebUrl as Mc, codexHookCommands as Md, chooseLenses as Mi, testReferences as Ml, installAndPin as Mn, effectiveTable as Mo, branchHead as Mr, canonicalJson as Ms, analyseConflict as Mt, deciderFor as Mu, isPublication as N, compareSemver as Na, measureResult as Nc, codexSessionIdOf as Nd, creatorStack as Ni, storiesIn as Nl, isEngineUpdatePoint as Nn, inheritClients as No, checkCiCommand as Nr, decisionPrompt as Ns, conflictSummary as Nt, delegationOf as Nu, itemOf as O, CommandRegistry as Oa, forgeOfHost as Oc, CODEX_HOOK_DEFINITIONS as Od, refreshedMergeSummary as Oi, criterionStatus as Ol, readDoctorCatalog as On, writeValidationMode as Oo, leaveFastTrackCommand as Or, keychainFull as Os, filesByStory as Ot, skippedPhases as Ou, isValidatedPublication as P, roleForbidden as Pa, statusCounts as Pc, messageDigest as Pd, findingRefs as Pi, storyIn$2 as Pl, maybeAutoUpdate as Pn, parseModelTable as Po, ciUnavailable as Pr, formDigest as Ps, forcedFiles as Pt, delegationVerdict as Pu, usageView as Q, CODEX_CONFIG_PATH as Qa, critiqueOfDocument as Qc, lessonRecord as Qi, methodConfigInvalid as Ql, dryRunFileAction as Qn, TOOL_GROUPS as Qo, productKeyById as Qr, passComplete as Qs, readLessonFile as Qt, unavailable$1 as Qu, gitView as R, syncCommand as Ra, tracedStoryStatus as Rc, encryptedFileKeyId as Rd, isSensitiveChange as Ri, sprintStories as Rl, contentPreview as Rn, isRecord as Ro, usableId as Rr, CI_CONFIG_PATHS as Rs, weightDrift as Rt, truncate as Ru, approvedArchitecture as S, checkDocuments as Sa, courseNote as Sc, sameProject as Sd, stackPromptItem as Si, mergedStoriesOf as Sl, runDoctor as Sn, validateProfile as So, COMMIT_CHECK_PATH as Sr, settledPoints as Ss, notRecorded as St, refusedDocumentReview as Su, UNKNOWN_DIGEST as T, blockOf$1 as Ta, openCourse as Tc, CURSOR_UNCHECKED_REASON as Td, readinessOf as Ti, staleKnowledgeStories as Tl, isAutomatic as Tn, writePermissionMode as To, COMMIT_SKIPS_PATH as Tr, deferredView as Ts, removeMergedWorktree as Tt, isPresetId as Tu, DOCUMENT_PATHS as U, isNetworkCommand as Ua, openDeviations as Uc, ANTIGRAVITY_POLICY_PATH as Ud, readerPasses as Ui, ARCHITECTURE_SECURITY_REVIEW_PATH as Ul, notReserved as Un, DEFAULT_RULES as Uo, deviceHeads as Ur, isWorkflowFile as Us, isCodePath as Ut, liftsBlocks as Uu, storyText as V, engineCommandOnly as Va, findDeviation as Vc, eventHash as Vd, mergeLensReports as Vi, validatedStories as Vl, isCreatorActionKind as Vn, renderConstitution as Vo, checkHumanEvents as Vr, existingCi as Vs, reuseLines as Vt, answerable as Vu, docsCommand as W, matchesAny as Wa, storyDeveloper as Wc, ANTIGRAVITY_UNCHECKED_REASON as Wd, stackText as Wi, SECURITY_REVIEWER as Wl, terminalCommand as Wn, allowedValues as Wo, journalProduct as Wr, mergeHold as Ws, isReadableCode as Wt, parseWaiverAnswer as Wu, figuresOf as X, pauseHolds as Xa, critiquable as Xc, batchesOf as Xi, editedMethodText as Xl, runsCriteria as Xn, provideToolManual as Xo, announcedKey as Xr, openMergeCheckpoint as Xs, openCommonKey as Xt, waiverRefusal as Xu, costsLines as Y, budgetMessage as Ya, correctionLines as Yc, approved as Yi, parseDocumentFile as Yl, parseDeclaredLine as Yn, inputShapeOf as Yo, adoptRotatedKey as Yr, needsSecurity as Ys, memoryInvalid as Yt, waiverExpired as Yu, usageSessionsOf as Z, pausedMessage as Za, critiqueById as Zc, dueScopes as Zi, loadMethodConfig as Zl, contentProblem as Zn, publishedShape as Zo, forgetProductKey as Zr, parseDiff as Zs, readCommonEntry as Zt, AgentPluggedError as Zu, antigravityTraceInfo as _, ruledOutLines as _a, fastTrackHold as _c, isCursorClient as _d, stackField as _i, validateShow as _l, environmentFixRecordOf as _n, readProfile as _o, parallelLimitProblem as _r, SKILL_FILE as _s, afterMerge as _t, activePhases as _u, invalidInput as a, retroOfCheckpoint as aa, securityReasons as ac, METHOD_GITIGNORE_PATH as ad, computeProjectionDetailed as ai, hypothesisById as al, afterExecution as an, mcpLaunch as ao, buildFromContent as ar, loadSkillLayers as as, datedAfter as at, GENERATED_HEADER_HASH as au, readClaudeTranscript as b, turnEvent as ba, courseById as bc, proofSessionOf as bd, stackPrompt as bi, blobIdsOf as bl, environmentChecks as bn, validatePermissionMode as bo, storyJournalView as br, readDefinitions as bs, mergedEvent as bt, openDocumentReview as bu, project as c, scopeFinished as ca, stackEntriesOf as cc, POINTER_FILES as cd, tableCandidate as ci, mentionsSensitiveData as cl, executionProblem as cn, loadManifest as co, bodySize as cr, overlap as cs, installHumanKey as ct, pointerStyleOf as cu, measureProduct as d, attemptLimitCheckpoint as da, unpublishedKinds as dc, isDecisionHook as dd, validateProposal as di, passageFound as dl, forgeRecordOf as dn, targetedTools as do, validateCreateField as dr, toolName as ds, reviewNotInteractive as dt, RETIRED_DEVELOPERS as du, memoryOf as ea, passOutcome as ec, resolveValidationSettings as ed, projectionKey as ei, critiqueStack as el, writeLessonFile as en, CLAUDE_SETTINGS_PATH as eo, AGENT_ACTIONS as er, toolNotation as es, countSpec as et, renderMethodConfig as eu, WINDOW_SLACK_MS as f, attemptsView as fa, untriagedFindings as fc, chatClientOf as fd, validateRecall as fi, refsOf as fl, isForgeAction as fn, toolsFromDetection as fo, recordGitWorkflow as fr, TOOL_CATALOG as fs, trustProblem as ft, currentDeveloper as fu, antigravityPlace as g, parseHypothesis as ga, safeObserved as gc, isCodexClient as gd, selectionOutsideStack as gi, validateSettle as gl, syncJournal as gn, profileCommand as go, targetBranch as gr, isDeveloper as gs, mergeHead as gt, STORY_BUILDERS as gu, antigravityModelAt as h, loopVerdict as ha, reportProblems as hc, isAntigravityClient as hd, readStackReply as hi, validateProposal$1 as hl, JournalBackup as hn, methodNotInstalled as ho, openPullRequestCommand as hr, overridePath as hs, installProductKey as ht, PHASE_CLOSERS as hu, defined as i, refusedRetro as ia, reviewVerdictOf as ic, METHOD_DIR as id, computeProjection as ii, hypothesesOf as il, actionUnchanged as in, engineCommand as io, workshopKnown as ir, isPersonalLayerFile as is, verified as it, GENERATED_HEADER as iu, decodeStrict as j, ok as ja, remoteLocation as jc, CODEX_UNCHECKED_REASON as jd, changeFiles as ji, isTestPath$1 as jl, engineUpdateOf as jn, writeGitWorkflow as jo, syncLateNotices as jr, DECISION_FORM_FIELDS as js, CONFLICT_OPTION_TEXT as jt, KNOWLEDGE_BASE_INDEX_PATH as ju, requirementAgentCommands as k, defineCommand as ka, forgeRepositoryOf as kc, CODEX_HOOK_NAME as kd, isMergeCheckpoint as ki, missingLine as kl, engineUpdateRecordOf as kn, repositoryOnForge as ko, storyFiles as kr, loadMachineKey as ks, mergeWaits as kt, skippedSteps as ku, projectWithKey as l, scopeStatus as la, stackEntryOf as lc, ROOT_CONSTITUTION_PATH as ld, tableOffer as li, normalizedPath as ll, executionStateProblem as ln, fallbacksFor as lo, verify as lr, significantWords as ls, keyCommand as lt, withPointerBlock as lu, measureTraces as m, loopStateOf as ma, qaLine as mc, citedKey as md, parseStackReply as mi, validateCritiqueReport as ml, JOURNAL_REMOTE_NAME as mn, resolveRules as mo, oneLine$1 as mr, loadOverrides as ms, writeHuman as mt, isRetiredDeveloper as mu, agentEventCommand as n, promotionSummary as na, reviewLoopReached as nc, METHOD_CONFIG_PATH as nd, sensitiveProductKey as ni, documentRisk as nl, fileBinding as nn, GEMINI_MD_PATH as no, checkCreate as nr, SKILL_OVERRIDES_DIR as ns, deferredAgentCommands as nt, writeEngineVersion as nu, planSprintCommand as o, retroSummary as oa, sensitivePath as oc, METHOD_SUBDIRS as od, gestureOwner as oi, ideaOffer as ol, currentRisk as on, withEngineCommand as oo, definitionDir as or, overrideCostWithFiles as os, humanKeyMissing as ot, isGenerated as ou, journalFacts as p, hypothesisProblem as pa, looksLikeProof as pc, chatHookPath as pd, stacksOf as pi, validateClose as pl, resolvePullRequestSettings as pn, detectTools as po, deliveryRemote as pr, AGENT_OVERRIDES_DIR as ps, trustedCreator as pt, documentOwner as pu, readMockupFiles as q, subcommands as qa, proofRequestOpen as qc, pointKindOf as qd, activeLessonIds as qi, readWorkingBytes as ql, lineForCriterion as qn, lockOf as qo, prepareEngineEvents as qr, findFinding as qs, isReservedMemoryPath as qt, statusAt as qu, agentWriteContext as r, recordDigest as ra, reviewOf as rc, METHOD_CONSTITUTION_PATH as rd, writingKey as ri, hypothesesDue as rl, workspacePath as rn, syncInputsFingerprint as ro, knownIds as rr, checkSkillOverrideRequest as rs, deferredCommand as rt, writeTools as ru, planned as s, retrosOf as sa, silentOf as sc, MODELS_PATH as sd, isDocsPath as si, keptObjections as sl, executionEvent as sn, SYNC_MANIFEST_PATH as so, analyze as sr, costOf$1 as ss, humanTarget as st, normalizeText as su, agentActivityCommands as t, overflows as ta, refutedOf as tc, methodSection as td, readHeldProductKey as ti, deliveredAfter as tl, checkSensitivePath as tn, parsePolicy as to, agentCommand as tr, withToolNotation as ts, currentState as tt, stringifyMethodDocument as tu, provenanceOf as u, targetsOf as ua, storyReviewDone as uc, decisionChannels as ud, validateClosing as ui, openStack as ul, higherRisk as un, CURSOR_RULE_PATH as uo, invalidArgument as ur, displayName as us, reviewCommand as ut, RENAMED_AGENTS as uu, count as v, triedLines as va, checkCourse as vc, isHookedClient as vd, stackItems as vi, versionsOf as vl, FailureSchema as vn, resolveProfile as vo, startStoryCommand as vr, definitionFolders as vs, mergeFailed as vt, approvedAt as vu, resolveInstallSettings as w, isPositioning as wa, leftLines as wc, CURSOR_POLICY_PATH as wd, judgedKey as wi, staleKnowledgeSources as wl, displayCommand as wn, writeInstallMode as wo, COMMIT_HOOK_NAME as wr, deferredLocks as ws, pendingMergeOf as wt, inactiveAgents as wu, skillNameOf as x, budgetThresholdsOf as xa, courseIsCoherent as xc, refOf as xd, stackPromptDigest as xi, knowledgePagesOf as xl, evaluateChecks as xn, validatePoints as xo, CHAINED_HOOK_NAME as xr, reasonHolds as xs, mergesOn as xt, phaseProgress as xu, lines as y, tryProblem as ya, computeImpact as yc, matchQuote as yd, stackProblem as yi, wasOffered as yl, diagnoseFailure as yn, validateInstallMode as yo, storyCommand as yr, parseDefinition as ys, mergeStory as yt, isDocumentReview as yu, criteriaTrace as z, commandForms as za, agentMayResolve as zc, wipeBytes as zd, lensDiff as zi, sprintsOf as zl, creatorActionCheckpoint as zn, isStrings as zo, createUlidFactory as zr, GITHUB_WORKFLOWS_DIR as zs, duplicateFindings as zt, ACTION_DECISIONS as zu };