@unbrained/pm-cli 2026.10.1 → 2026.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +8 -0
  3. package/dist/cli/error-guidance.d.ts +5 -0
  4. package/dist/cli/error-guidance.js +1 -1
  5. package/dist/cli/main.js +2 -2
  6. package/dist/cli/register-structured-mutation.d.ts +2 -0
  7. package/dist/cli/register-structured-mutation.js +1 -1
  8. package/dist/cli/runtime/projection-retry.d.ts +9 -0
  9. package/dist/cli/runtime/projection-retry.js +2 -0
  10. package/dist/cli/runtime/selection.d.ts +5 -1
  11. package/dist/cli/runtime/selection.js +1 -1
  12. package/dist/cli-bundle/bundle-manifest.json +154 -154
  13. package/dist/cli-bundle/chunks/{chunk-SCZMJ5DC.js → chunk-7FUEQOYG.js} +2 -2
  14. package/dist/cli-bundle/chunks/chunk-7NL3A2BY.js +2 -0
  15. package/dist/cli-bundle/chunks/chunk-CZLAWXDR.js +8 -0
  16. package/dist/cli-bundle/chunks/chunk-HY6M34B4.js +2 -0
  17. package/dist/cli-bundle/chunks/{chunk-A2UPOCSW.js → chunk-MTJMOI4I.js} +12 -12
  18. package/dist/cli-bundle/chunks/chunk-R4TUD355.js +6 -0
  19. package/dist/cli-bundle/chunks/chunk-R7ULWMBG.js +238 -0
  20. package/dist/cli-bundle/chunks/chunk-SV7CZEVV.js +20 -0
  21. package/dist/cli-bundle/chunks/chunk-TRYXVQ7W.js +3 -0
  22. package/dist/cli-bundle/chunks/{chunk-AYHLUJKD.js → chunk-WP6NRH72.js} +2 -2
  23. package/dist/cli-bundle/chunks/{chunk-VWVFKPLX.js → chunk-XOUBIF6Z.js} +38 -38
  24. package/dist/cli-bundle/chunks/chunk-Z2GYDSAO.js +3 -0
  25. package/dist/cli-bundle/chunks/{chunk-DGOIXJZJ.js → chunk-ZI7F3FVE.js} +47 -47
  26. package/dist/cli-bundle/chunks/{register-list-query-L6HAHW7V.js → register-list-query-R4PHNB7W.js} +2 -2
  27. package/dist/cli-bundle/chunks/register-mutation-PDDAUDYV.js +20 -0
  28. package/dist/cli-bundle/chunks/{register-operations-3E5U4TOE.js → register-operations-A5HJT46K.js} +2 -2
  29. package/dist/cli-bundle/chunks/{register-setup-VUD37N4A.js → register-setup-EZ2F25JI.js} +2 -2
  30. package/dist/cli-bundle/focused-chunks/{chunk-MOUCTR72.js → chunk-3BIYG72P.js} +2 -2
  31. package/dist/cli-bundle/focused-chunks/{chunk-T4PZJQG4.js → chunk-4FFPGNCJ.js} +2 -2
  32. package/dist/cli-bundle/focused-chunks/{chunk-YBQ27KG7.js → chunk-BLCTBSGT.js} +43 -43
  33. package/dist/cli-bundle/focused-chunks/{chunk-XUCXRZZZ.js → chunk-DBD4W4QP.js} +2 -2
  34. package/dist/cli-bundle/focused-chunks/{chunk-6275G2AN.js → chunk-E754JDLY.js} +2 -2
  35. package/dist/cli-bundle/focused-chunks/{chunk-4AORVUT4.js → chunk-EJN7DY3B.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/{chunk-OMBDUJWZ.js → chunk-FKK2HI3S.js} +2 -2
  37. package/dist/cli-bundle/focused-chunks/chunk-GBD4EN6S.js +12 -0
  38. package/dist/cli-bundle/focused-chunks/{chunk-ZJ3CLTV4.js → chunk-GMYUNHST.js} +2 -2
  39. package/dist/cli-bundle/focused-chunks/chunk-IR4UXLRP.js +20 -0
  40. package/dist/cli-bundle/focused-chunks/{chunk-RIJQQOEZ.js → chunk-UTRSM3ZK.js} +2 -2
  41. package/dist/cli-bundle/focused-chunks/{chunk-EVMH4SKN.js → chunk-VVWYI2X7.js} +2 -2
  42. package/dist/cli-bundle/focused-chunks/chunk-WCY6HRZO.js +30 -0
  43. package/dist/cli-bundle/focused-chunks/{chunk-XB5Q2P7Z.js → chunk-XRSCIYHR.js} +2 -2
  44. package/dist/cli-bundle/focused-chunks/chunk-YC32ZSLS.js +165 -0
  45. package/dist/cli-bundle/focused-chunks/{chunk-IQBFYQF2.js → chunk-ZIXFMIUL.js} +2 -2
  46. package/dist/cli-bundle/main.js +22 -22
  47. package/dist/cli-bundle/sdk-authoring.js +1 -1
  48. package/dist/cli-bundle/sdk-contracts.js +2 -2
  49. package/dist/cli-bundle/sdk-core.js +2 -2
  50. package/dist/cli-bundle/sdk-governance.js +1 -1
  51. package/dist/cli-bundle/sdk-graph.js +1 -1
  52. package/dist/cli-bundle/sdk-merge.js +48 -48
  53. package/dist/cli-bundle/sdk-query.js +1 -1
  54. package/dist/cli-bundle/sdk-runtime.js +1 -1
  55. package/dist/cli-bundle/sdk-testing.js +1 -1
  56. package/dist/cli-bundle/sdk.js +7 -7
  57. package/dist/core/fs/fs-utils.d.ts +11 -0
  58. package/dist/core/fs/fs-utils.js +2 -2
  59. package/dist/core/shared/errors.d.ts +9 -0
  60. package/dist/core/shared/errors.js +1 -1
  61. package/dist/core/store/settings.d.ts +15 -5
  62. package/dist/core/store/settings.js +3 -3
  63. package/dist/core/telemetry/runtime.js +3 -3
  64. package/dist/mcp/server.js +1 -1
  65. package/dist/sdk/agent/closed-domain-contracts.js +1 -1
  66. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  67. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  68. package/dist/sdk/item-transaction.d.ts +11 -0
  69. package/dist/sdk/item-transaction.js +1 -1
  70. package/dist/sdk/pagination.js +1 -1
  71. package/dist/sdk/public-surface.json +1 -1
  72. package/dist/sdk/query/context.d.ts +2 -0
  73. package/dist/sdk/query/context.js +1 -1
  74. package/dist/sdk/query/get.js +1 -1
  75. package/dist/sdk/query/list.js +1 -1
  76. package/dist/sdk/query/search-contracts.js +1 -1
  77. package/dist/sdk/query/search-pagination.d.ts +4 -0
  78. package/dist/sdk/query/search-pagination.js +1 -1
  79. package/dist/sdk/query/search.js +1 -1
  80. package/dist/sdk/read-output/options.d.ts +14 -0
  81. package/dist/sdk/read-output/options.js +2 -0
  82. package/dist/sdk/read-output-budget.js +1 -1
  83. package/dist/sdk/read-output-contracts.js +1 -1
  84. package/dist/sdk/read-output-rows.d.ts +4 -0
  85. package/dist/sdk/read-output-rows.js +1 -1
  86. package/dist/sdk/runtime-primitives.d.ts +2 -2
  87. package/dist/sdk/runtime-primitives.js +1 -1
  88. package/dist/sdk/runtime.js +1 -1
  89. package/dist/sdk/workspace-transaction.d.ts +2 -0
  90. package/dist/sdk/workspace-transaction.js +2 -2
  91. package/docs/OUTPUT_PROJECTION_CONTRACTS.md +27 -0
  92. package/docs/SDK.md +98 -0
  93. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +5 -3
  94. package/marketplace.json +2 -2
  95. package/package.json +1 -1
  96. package/packages/pm-beads/package.json +1 -1
  97. package/packages/pm-calendar/package.json +1 -1
  98. package/packages/pm-command-kit/package.json +1 -1
  99. package/packages/pm-digital-twin/package.json +1 -1
  100. package/packages/pm-governance-audit/package.json +1 -1
  101. package/packages/pm-guide-shell/package.json +1 -1
  102. package/packages/pm-kanban/package.json +1 -1
  103. package/packages/pm-lifecycle-hooks/package.json +1 -1
  104. package/packages/pm-linked-test-adapters/package.json +1 -1
  105. package/packages/pm-search-advanced/package.json +1 -1
  106. package/packages/pm-templates/package.json +1 -1
  107. package/packages/pm-todos/package.json +1 -1
  108. package/packages/pm-vcs/package.json +1 -1
  109. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  110. package/plugins/pm-claude/package.json +2 -2
  111. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  112. package/plugins/pm-codex/package.json +2 -2
  113. package/plugins/pm-codex/plugin.json +1 -1
  114. package/dist/cli-bundle/chunks/chunk-7E2EBJLY.js +0 -3
  115. package/dist/cli-bundle/chunks/chunk-BNAT4EYR.js +0 -20
  116. package/dist/cli-bundle/chunks/chunk-HGJLVN56.js +0 -8
  117. package/dist/cli-bundle/chunks/chunk-JAVO3Z42.js +0 -6
  118. package/dist/cli-bundle/chunks/chunk-TV3YDE36.js +0 -2
  119. package/dist/cli-bundle/chunks/chunk-UIAH7UFK.js +0 -238
  120. package/dist/cli-bundle/chunks/chunk-USTAFHIM.js +0 -2
  121. package/dist/cli-bundle/chunks/chunk-YM342ELM.js +0 -3
  122. package/dist/cli-bundle/chunks/register-mutation-6OCZVTW5.js +0 -20
  123. package/dist/cli-bundle/focused-chunks/chunk-3CAZ7Z4R.js +0 -30
  124. package/dist/cli-bundle/focused-chunks/chunk-DJPP2HAK.js +0 -12
  125. package/dist/cli-bundle/focused-chunks/chunk-IDB6E3ZV.js +0 -165
  126. package/dist/cli-bundle/focused-chunks/chunk-UPOMLSW7.js +0 -20
@@ -5,6 +5,8 @@ export declare function createSearchCursorFingerprint(options: {
5
5
  query: string;
6
6
  mode: SearchMode;
7
7
  searchOptions: SearchOptions;
8
+ /** Resolved tracker scope when invoked by the query runtime. */
9
+ pmRoot?: string;
8
10
  }): string;
9
11
  /** Page ranked search hits without coupling cursor mechanics to search scoring. */
10
12
  export declare function resolveSearchPage(options: {
@@ -13,6 +15,8 @@ export declare function resolveSearchPage(options: {
13
15
  mode: SearchMode;
14
16
  searchOptions: SearchOptions;
15
17
  limit: number;
18
+ /** Resolved tracker scope when invoked by the query runtime. */
19
+ pmRoot?: string;
16
20
  }): {
17
21
  limited: SearchHit[];
18
22
  pageExtras: {
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="91b01dd0-6a8d-5b97-96d2-c27f4044c009")}catch(e2){}})();import{createQueryFingerprint,paginateQueryRows,selectCursorSemanticOptions}from"../pagination.js";import{SEARCH_FLAG_CONTRACTS}from"../cli-contracts/flag-contracts.js";function createSearchCursorFingerprint(options){return createQueryFingerprint("search",{query:options.query.trim(),mode:options.mode,options:selectCursorSemanticOptions(options.searchOptions,SEARCH_FLAG_CONTRACTS)})}function resolveSearchPage(options){const page=paginateQueryRows(options.sorted,{cursor:options.searchOptions.after,fingerprint:createSearchCursorFingerprint(options),limit:options.limit,readId:hit=>hit.item.id});return{limited:page.rows,pageExtras:{applied_limit:options.limit,...page.has_more?{has_more:true,truncated:true}:{},...page.next_cursor?{next_cursor:page.next_cursor}:{}}}}export{createSearchCursorFingerprint,resolveSearchPage};
1
+ !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="18c21143-96a8-5031-b288-42f6188f8821")}catch(e2){}})();import{createQueryFingerprint,paginateQueryRows,selectCursorSemanticOptions}from"../pagination.js";import{SEARCH_FLAG_CONTRACTS}from"../cli-contracts/flag-contracts.js";function createSearchCursorFingerprint(options){return createQueryFingerprint("search",{pmRoot:options.pmRoot,query:options.query.trim(),mode:options.mode,options:selectCursorSemanticOptions(options.searchOptions,SEARCH_FLAG_CONTRACTS)})}function resolveSearchPage(options){const page=paginateQueryRows(options.sorted,{cursor:options.searchOptions.after,fingerprint:createSearchCursorFingerprint(options),limit:options.limit,readId:hit=>hit.item.id});return{limited:page.rows,pageExtras:{applied_limit:options.limit,...page.has_more?{has_more:true,truncated:true}:{},...page.next_cursor?{next_cursor:page.next_cursor}:{}}}}export{createSearchCursorFingerprint,resolveSearchPage};
2
2
  //# sourceMappingURL=search-pagination.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9e7719a0-9efa-59c2-85d5-e7a5eb30d8e3")}catch(e2){}})();import{getActiveExtensionRegistrations}from"../../core/extensions/index.js";import{lifecycleClassifierFromStatusRegistry}from"../../core/governance/metadata-coverage.js";import{parseStatusFilterCsv}from"../../core/item/status-filter.js";import{resolveItemTypeRegistry}from"../../core/item/type-registry.js";import{collectRuntimeFilterValues}from"../../core/schema/runtime-field-filters.js";import{resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry}from"../../core/schema/runtime-schema.js";import{resolveBm25Params}from"../../core/search/bm25.js";import{resolveSearchCorpusFields}from"../../core/search/corpus.js";import{resolveEmbeddingProviders,resolveProviderConfigSource}from"../../core/search/providers.js";import{resolveQueryExpansionConfig,resolveRerankConfig}from"../../core/search/relevance.js";import{resolveSettingsWithSemanticRuntimeDefaults}from"../../core/search/semantic-defaults.js";import{resolveVectorStores}from"../../core/search/vector-stores.js";import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";import{nowIso}from"../../core/shared/time.js";import{resolvePmRoot}from"../../core/store/paths.js";import{readSettings}from"../../core/store/settings.js";import{assertInitializedTracker}from"../environment/tracker-preflight.js";import{readWorkspaceMemory,searchWorkspaceMemoryReadResult}from"../workspace-memory.js";import{parseSearchProjection,parseSearchTokens,parseSemanticWeightOverride,parseTimestampWindow,resolveEffectiveSearchMode,resolveHybridSemanticWeight,resolveSearchMaxResults,resolveSearchScoreThreshold,resolveSearchTuning,validateSearchProjectionFields}from"./search-contracts.js";import{resolveSearchPage}from"./search-pagination.js";import{buildCompactSearchFilterSummary,buildVerboseSearchFilters}from"./search-rendering.js";import{collectLinkedCorpusById,collectLinkedPaths,loadDocuments,loadLinkedCorpus,resolveLinkedCorpusRoots}from"./search/corpus.js";import{applyExactQueryFilters,applyFilters,collectExactPhraseFields,dependencyEntries,documentContainsExactPhrase,stringArray,textEntries}from"./search/filters.js";import{applyInlineQueryFilters,assertSearchPagingOptions,parseInlineQueryFilters,prepareSearchInput}from"./search/input.js";import{buildHitHighlights,buildHybridLexicalScore,countOccurrences,highlightFieldSnippet,markTokenRuns,normalizeScoreMap,scoreDocument,sortHits}from"./search/lexical.js";import{attachSearchHighlights,buildCountOnlySearchResult,buildEmptySearchResultFromContext,buildSearchResultForHits,emptySearchResult,projectSearchHits,readSearchFieldValue,withSearchWorkspaceMemory}from"./search/response.js";import{buildExplicitSemanticFallbackWarning,buildRerankCorpus,buildSemanticHits,classifyImplicitSemanticFallbackReason,collectErrorCauseCodes,combineHybridHits,computeBuiltInBm25Hits,computeSemanticOrHybridHits,maybeEmitVectorIndexStaleWarning,mergeVectorHitsById,normalizeExtensionProviderHits,requireSemanticDependencies,resolveBuiltInBm25Mode,resolveExtensionSearchProvider,resolveExtensionSearchProviderByName,resolveExtensionVectorAdapter,resolveQueryExpansionExtension,resolveRerankExtension,toOptionalNonEmptyString}from"./search/semantic.js";import{resolveEffectiveSearchMode as resolveEffectiveSearchMode2,resolveHybridSemanticWeight as resolveHybridSemanticWeight2,resolveSearchMaxResults as resolveSearchMaxResults2,resolveSearchScoreThreshold as resolveSearchScoreThreshold2,resolveSearchTuning as resolveSearchTuning2}from"./search-contracts.js";import{classifyImplicitSemanticFallbackReason as classifyImplicitSemanticFallbackReason2,collectErrorCauseCodes as collectErrorCauseCodes2,formatVectorIndexRecoveryWarnings,resolveVectorIndexRecovery}from"./search/semantic.js";const _testOnlySearchCommand={applyFilters,applyExactQueryFilters,applyInlineQueryFilters,buildHitHighlights,buildVerboseSearchFilters,buildExplicitSemanticFallbackWarning,buildCompactSearchFilterSummary,buildHybridLexicalScore,buildRerankCorpus,buildSemanticHits,classifyImplicitSemanticFallbackReason,collectErrorCauseCodes,collectExactPhraseFields,collectLinkedPaths,combineHybridHits,computeBuiltInBm25Hits,computeSemanticOrHybridHits,resolveBuiltInBm25Mode,countOccurrences,dependencyEntries,documentContainsExactPhrase,emptySearchResult,highlightFieldSnippet,loadDocuments,markTokenRuns,parseInlineQueryFilters,maybeEmitVectorIndexStaleWarning,loadLinkedCorpus,mergeVectorHitsById,normalizeExtensionProviderHits,normalizeScoreMap,parseProjectionConfig:parseSearchProjection,parseTimestampWindow,parseTokens:parseSearchTokens,projectSearchHits,readSearchFieldValue,requireSemanticDependencies,resolveExtensionSearchProvider,resolveExtensionSearchProviderByName,resolveExtensionVectorAdapter,resolveLinkedCorpusRoots,scoreDocument,sortHits,stringArray,textEntries,validateSearchProjectionFields};async function resolveSearchRuntimeContext(prepared,global2){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const storedSettings=await readSettings(pmRoot);const settings=resolveSettingsWithSemanticRuntimeDefaults(storedSettings).settings;const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);const runtimeFieldRegistry=resolveRuntimeFieldRegistry(settings.schema);validateSearchProjectionFields(prepared.projection,runtimeFieldRegistry,prepared.query);const runtimeFieldFilters=collectRuntimeFilterValues(prepared.options,runtimeFieldRegistry,"search");const typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations());const providerResolution=resolveEmbeddingProviders(settings);const vectorResolution=resolveVectorStores(settings,pmRoot);const extensionSearchProvider=resolveExtensionSearchProvider(settings);const extensionVectorAdapter=resolveExtensionVectorAdapter(settings);const semanticWeightOverride=parseSemanticWeightOverride(prepared.options.semanticWeight);const queryExpansion=resolveQueryExpansionConfig(settings,providerResolution.active?.name??null);const rerank=resolveRerankConfig(settings,providerResolution.active?.model??toOptionalNonEmptyString(settings.search?.embedding_model)??"text-embedding-3-small");return{pmRoot,settings,statusRegistry,runtimeFieldRegistry,runtimeFieldFilters,typeRegistry,maxResults:resolveSearchMaxResults(settings),scoreThreshold:prepared.minScoreOverride??resolveSearchScoreThreshold(settings),semanticWeightProvided:prepared.options.semanticWeight!==void 0,semanticWeightOverride,hybridSemanticWeight:semanticWeightOverride??resolveHybridSemanticWeight(settings),tuning:resolveSearchTuning(settings),providerResolution,vectorResolution,extensionSearchProvider,extensionVectorAdapter,bm25Mode:resolveBuiltInBm25Mode({configuredProvider:toOptionalNonEmptyString(settings.search?.provider),hasEmbeddingProvider:providerResolution.active!==null,hasExtensionSearchProvider:extensionSearchProvider!==null}),queryExpansion,queryExpansionExtension:resolveQueryExpansionExtension(queryExpansion),rerank,rerankExtension:resolveRerankExtension(settings),...resolveRuntimeSearchMode({requested:prepared.options.mode,settings,configuredProvider:storedSettings.search?.provider??null,providerResolution,vectorResolution,extensionSearchProvider,extensionVectorAdapter})}}function resolveRuntimeSearchMode(params){const providerConfigured=resolveProviderConfigSource(params.providerResolution.active?.name,params.configuredProvider)==="configured";const builtInRunnable=providerConfigured&&(params.vectorResolution.active!==null||params.extensionVectorAdapter!==null);const semanticRunnable=params.extensionSearchProvider!==null||builtInRunnable;const resolution=resolveEffectiveSearchMode({requested:params.requested,settings:params.settings,semanticRunnable});return{effectiveMode:resolution.mode,modeSource:resolution.source}}async function loadFilteredSearchCorpus(prepared,runtime){const loadedDocuments=await loadDocuments(runtime.pmRoot,runtime.settings.item_format??"toon",runtime.typeRegistry.type_to_folder,runtime.settings.schema);const statusFilter=parseStatusFilterCsv(typeof prepared.options.status==="string"?prepared.options.status:void 0,runtime.statusRegistry,{strict:true});const lifecycleClassifier=lifecycleClassifierFromStatusRegistry(runtime.statusRegistry);const metadataFilteredDocuments=applyFilters(loadedDocuments.documents,prepared.options,runtime.typeRegistry,runtime.runtimeFieldFilters,statusFilter,lifecycleClassifier);return{warnings:loadedDocuments.warnings,allDocuments:loadedDocuments.documents,filteredDocuments:applyExactQueryFilters(metadataFilteredDocuments,prepared.normalizedQuery,{titleExact:prepared.titleExact,phraseExact:prepared.phraseExact||prepared.matchMode==="exact"})}}async function computeKeywordSearchHits(prepared,runtime,filteredDocuments){const linkedCorpusById=await collectLinkedCorpusById(prepared.includeLinked,runtime.effectiveMode,filteredDocuments);const applyCoverageBonus=prepared.matchMode==="or";return filteredDocuments.map(document=>buildHybridLexicalScore(document,prepared.tokens,prepared.normalizedQuery,prepared.includeLinked,linkedCorpusById,runtime.tuning,runtime.settings.id_prefix,applyCoverageBonus)).filter(entry=>entry!==null).filter(entry=>prepared.matchMode!=="and"||entry.matched_all_terms===true)}async function executeBuiltInBm25Search(prepared,runtime,filteredDocuments,keywordHits,warnings){if(runtime.bm25Mode===null||runtime.effectiveMode==="keyword"){return null}const hits=computeBuiltInBm25Hits({requestedMode:runtime.effectiveMode,query:prepared.query,filteredDocuments,keywordHits,corpusFields:resolveSearchCorpusFields(runtime.settings),bm25Params:resolveBm25Params(runtime.settings),hybridSemanticWeight:runtime.hybridSemanticWeight});if(runtime.bm25Mode==="auto-fallback"){warnings.push(`search_${runtime.effectiveMode}_offline_bm25:no_embedding_provider:using_lexical_bm25`)}return hits}async function executeExtensionSearchProvider(prepared,runtime,filteredDocuments,filteredById){if(!runtime.extensionSearchProvider){return null}const canUseBuiltInSemantic=runtime.providerResolution.active!==null&&(runtime.vectorResolution.active!==null||runtime.extensionVectorAdapter!==null);try{const providerResponse=await Promise.resolve(runtime.extensionSearchProvider.query({query:prepared.query,mode:runtime.effectiveMode,tokens:prepared.tokens,options:prepared.options,settings:runtime.settings,documents:filteredDocuments}));return normalizeExtensionProviderHits(runtime.extensionSearchProvider.providerName,providerResponse,filteredById)}catch(error){if(!canUseBuiltInSemantic){throw new PmCliError(`Extension search provider "${runtime.extensionSearchProvider.providerName}" failed: ${error instanceof Error?error.message:String(error)}`,EXIT_CODE.GENERIC_FAILURE)}return null}}function maybeApplyNoVectorFallback(effectiveMode,semanticResult,keywordHits,warnings){if(semanticResult.vectorMatchCount>0){return semanticResult.hits}warnings.push(`search_${effectiveMode}_degraded:no_vector_matches:results_are_lexical`);return effectiveMode==="semantic"?keywordHits:semanticResult.hits}async function prepareBuiltInSemanticSearch(runtime,effectiveMode,filteredDocuments,warnings,modeWasExplicit){const builtInSemanticWillRun=!runtime.extensionSearchProvider&&runtime.providerResolution.active!==null&&(runtime.vectorResolution.active!==null||runtime.extensionVectorAdapter!==null);if(modeWasExplicit&&builtInSemanticWillRun){await maybeEmitVectorIndexStaleWarning(runtime.pmRoot,filteredDocuments,warnings)}if(!runtime.extensionSearchProvider){requireSemanticDependencies(effectiveMode,runtime.providerResolution,runtime.vectorResolution,runtime.extensionVectorAdapter!==null)}}async function executeSemanticSearch(input){const{prepared,runtime,filteredDocuments,keywordHits,warnings,modeWasExplicit}=input;let hits=keywordHits;const bm25Hits=await executeBuiltInBm25Search(prepared,runtime,filteredDocuments,keywordHits,warnings);const semanticMode=runtime.effectiveMode;if(bm25Hits!==null||semanticMode==="keyword"){return{effectiveMode:runtime.effectiveMode,hits:bm25Hits??hits}}try{await prepareBuiltInSemanticSearch(runtime,semanticMode,filteredDocuments,warnings,modeWasExplicit);if(filteredDocuments.length===0||prepared.limit===0){return{effectiveMode:runtime.effectiveMode,hits:[]}}const filteredById=new Map(filteredDocuments.map(document=>[document.metadata.id,document]));hits=await executeExtensionSearchProvider(prepared,runtime,filteredDocuments,filteredById)??hits;if(hits===keywordHits){const{provider,vectorStore}=requireSemanticDependencies(semanticMode,runtime.providerResolution,runtime.vectorResolution,runtime.extensionVectorAdapter!==null);const semanticResult=await computeSemanticOrHybridHits({requestedMode:semanticMode,query:prepared.query,filteredDocuments,keywordHits,hybridSemanticWeight:runtime.hybridSemanticWeight,limit:prepared.limit,maxResults:runtime.maxResults,provider,vectorStore,extensionVectorAdapter:runtime.extensionVectorAdapter,queryExpansion:runtime.queryExpansion,queryExpansionExtension:runtime.queryExpansionExtension,rerank:runtime.rerank,rerankExtension:runtime.rerankExtension,warnings,settings:runtime.settings});hits=maybeApplyNoVectorFallback(semanticMode,semanticResult,keywordHits,warnings)}return{effectiveMode:runtime.effectiveMode,hits}}catch(error){warnings.push(buildExplicitSemanticFallbackWarning(runtime.effectiveMode,error));return{effectiveMode:"keyword",hits:keywordHits}}}async function runSearch(rawQuery,rawOptions,global2){assertSearchPagingOptions(rawOptions);const prepared=prepareSearchInput(rawQuery,rawOptions);const runtime=await resolveSearchRuntimeContext(prepared,global2);const corpus=await loadFilteredSearchCorpus(prepared,runtime);const warnings=corpus.warnings;warnings.push(...prepared.inlineWarnings);const workspaceMemory=await readWorkspaceMemory(corpus.allDocuments.map(document=>document.metadata),{pmRoot:runtime.pmRoot,statusRegistry:runtime.statusRegistry,now:nowIso()});warnings.push(...workspaceMemory.warnings);const workspaceMemoryResult=searchWorkspaceMemoryReadResult(workspaceMemory,prepared.query);if(runtime.effectiveMode==="hybrid"&&runtime.semanticWeightProvided&&runtime.semanticWeightOverride===void 0){warnings.push("search_hybrid_semantic_weight_override_invalid:using_settings_default")}const responseBase={query:prepared.query,modeSource:runtime.modeSource,matchMode:prepared.matchMode,options:prepared.options,includeLinked:prepared.includeLinked,titleExact:prepared.titleExact,phraseExact:prepared.phraseExact,scoreThreshold:runtime.scoreThreshold,hybridSemanticWeight:runtime.hybridSemanticWeight,queryExpansion:runtime.queryExpansion,rerank:runtime.rerank,projection:prepared.projection,warnings,runtimeFieldFilters:runtime.runtimeFieldFilters};if(runtime.effectiveMode==="keyword"&&(corpus.filteredDocuments.length===0||prepared.limit===0&&!prepared.countOnly)){return withSearchWorkspaceMemory(buildEmptySearchResultFromContext({...responseBase,effectiveMode:runtime.effectiveMode},prepared.countOnly),workspaceMemoryResult)}const keywordHits=await computeKeywordSearchHits(prepared,runtime,corpus.filteredDocuments);const modeResult=await executeSemanticSearch({prepared,runtime,filteredDocuments:corpus.filteredDocuments,keywordHits,warnings,modeWasExplicit:prepared.modeWasExplicit});if(modeResult.effectiveMode!=="keyword"&&modeResult.hits.length===0&&(corpus.filteredDocuments.length===0||prepared.limit===0&&!prepared.countOnly)){return withSearchWorkspaceMemory(buildEmptySearchResultFromContext({...responseBase,effectiveMode:modeResult.effectiveMode},prepared.countOnly),workspaceMemoryResult)}const thresholded=modeResult.hits.filter(entry=>entry.exact_id_match===true||entry.score>=runtime.scoreThreshold);const sorted=sortHits(thresholded,runtime.statusRegistry);const total=sorted.length;const page=resolveSearchPage({sorted,query:prepared.query,mode:modeResult.effectiveMode,searchOptions:prepared.options,limit:prepared.limit??runtime.maxResults});const response={...responseBase,effectiveMode:modeResult.effectiveMode};if(prepared.countOnly){return withSearchWorkspaceMemory(buildCountOnlySearchResult(response,total),workspaceMemoryResult)}const{hits:projectedHits,projection:effectiveProjection}=attachSearchHighlights(prepared,corpus.filteredDocuments,page.limited);const projectedItems=projectSearchHits(projectedHits,effectiveProjection);return withSearchWorkspaceMemory(buildSearchResultForHits(response,projectedItems,total,page.limited.length,effectiveProjection,page.pageExtras),workspaceMemoryResult)}export{_testOnlySearchCommand,classifyImplicitSemanticFallbackReason2 as classifyImplicitSemanticFallbackReason,collectErrorCauseCodes2 as collectErrorCauseCodes,formatVectorIndexRecoveryWarnings,resolveEffectiveSearchMode2 as resolveEffectiveSearchMode,resolveHybridSemanticWeight2 as resolveHybridSemanticWeight,resolveSearchMaxResults2 as resolveSearchMaxResults,resolveSearchScoreThreshold2 as resolveSearchScoreThreshold,resolveSearchTuning2 as resolveSearchTuning,resolveVectorIndexRecovery,runSearch};
1
+ !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="59612a0b-e84f-5a7c-b9ae-a26ec9a939e2")}catch(e2){}})();import{getActiveExtensionRegistrations}from"../../core/extensions/index.js";import{lifecycleClassifierFromStatusRegistry}from"../../core/governance/metadata-coverage.js";import{parseStatusFilterCsv}from"../../core/item/status-filter.js";import{resolveItemTypeRegistry}from"../../core/item/type-registry.js";import{collectRuntimeFilterValues}from"../../core/schema/runtime-field-filters.js";import{resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry}from"../../core/schema/runtime-schema.js";import{resolveBm25Params}from"../../core/search/bm25.js";import{resolveSearchCorpusFields}from"../../core/search/corpus.js";import{resolveEmbeddingProviders,resolveProviderConfigSource}from"../../core/search/providers.js";import{resolveQueryExpansionConfig,resolveRerankConfig}from"../../core/search/relevance.js";import{resolveSettingsWithSemanticRuntimeDefaults}from"../../core/search/semantic-defaults.js";import{resolveVectorStores}from"../../core/search/vector-stores.js";import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";import{nowIso}from"../../core/shared/time.js";import{resolvePmRoot}from"../../core/store/paths.js";import{readSettings}from"../../core/store/settings.js";import{assertInitializedTracker}from"../environment/tracker-preflight.js";import{readWorkspaceMemory,searchWorkspaceMemoryReadResult}from"../workspace-memory.js";import{parseSearchProjection,parseSearchTokens,parseSemanticWeightOverride,parseTimestampWindow,resolveEffectiveSearchMode,resolveHybridSemanticWeight,resolveSearchMaxResults,resolveSearchScoreThreshold,resolveSearchTuning,validateSearchProjectionFields}from"./search-contracts.js";import{createSearchCursorFingerprint,resolveSearchPage}from"./search-pagination.js";import{decodeQueryCursor}from"../pagination.js";import{buildCompactSearchFilterSummary,buildVerboseSearchFilters}from"./search-rendering.js";import{collectLinkedCorpusById,collectLinkedPaths,loadDocuments,loadLinkedCorpus,resolveLinkedCorpusRoots}from"./search/corpus.js";import{applyExactQueryFilters,applyFilters,collectExactPhraseFields,dependencyEntries,documentContainsExactPhrase,stringArray,textEntries}from"./search/filters.js";import{applyInlineQueryFilters,assertSearchPagingOptions,parseInlineQueryFilters,prepareSearchInput}from"./search/input.js";import{buildHitHighlights,buildHybridLexicalScore,countOccurrences,highlightFieldSnippet,markTokenRuns,normalizeScoreMap,scoreDocument,sortHits}from"./search/lexical.js";import{attachSearchHighlights,buildCountOnlySearchResult,buildEmptySearchResultFromContext,buildSearchResultForHits,emptySearchResult,projectSearchHits,readSearchFieldValue,withSearchWorkspaceMemory}from"./search/response.js";import{buildExplicitSemanticFallbackWarning,buildRerankCorpus,buildSemanticHits,classifyImplicitSemanticFallbackReason,collectErrorCauseCodes,combineHybridHits,computeBuiltInBm25Hits,computeSemanticOrHybridHits,maybeEmitVectorIndexStaleWarning,mergeVectorHitsById,normalizeExtensionProviderHits,requireSemanticDependencies,resolveBuiltInBm25Mode,resolveExtensionSearchProvider,resolveExtensionSearchProviderByName,resolveExtensionVectorAdapter,resolveQueryExpansionExtension,resolveRerankExtension,toOptionalNonEmptyString}from"./search/semantic.js";import{resolveEffectiveSearchMode as resolveEffectiveSearchMode2,resolveHybridSemanticWeight as resolveHybridSemanticWeight2,resolveSearchMaxResults as resolveSearchMaxResults2,resolveSearchScoreThreshold as resolveSearchScoreThreshold2,resolveSearchTuning as resolveSearchTuning2}from"./search-contracts.js";import{classifyImplicitSemanticFallbackReason as classifyImplicitSemanticFallbackReason2,collectErrorCauseCodes as collectErrorCauseCodes2,formatVectorIndexRecoveryWarnings,resolveVectorIndexRecovery}from"./search/semantic.js";const _testOnlySearchCommand={applyFilters,applyExactQueryFilters,applyInlineQueryFilters,buildHitHighlights,buildVerboseSearchFilters,buildExplicitSemanticFallbackWarning,buildCompactSearchFilterSummary,buildHybridLexicalScore,buildRerankCorpus,buildSemanticHits,classifyImplicitSemanticFallbackReason,collectErrorCauseCodes,collectExactPhraseFields,collectLinkedPaths,combineHybridHits,computeBuiltInBm25Hits,computeSemanticOrHybridHits,resolveBuiltInBm25Mode,countOccurrences,dependencyEntries,documentContainsExactPhrase,emptySearchResult,highlightFieldSnippet,loadDocuments,markTokenRuns,parseInlineQueryFilters,maybeEmitVectorIndexStaleWarning,loadLinkedCorpus,mergeVectorHitsById,normalizeExtensionProviderHits,normalizeScoreMap,parseProjectionConfig:parseSearchProjection,parseTimestampWindow,parseTokens:parseSearchTokens,projectSearchHits,readSearchFieldValue,requireSemanticDependencies,resolveExtensionSearchProvider,resolveExtensionSearchProviderByName,resolveExtensionVectorAdapter,resolveLinkedCorpusRoots,scoreDocument,sortHits,stringArray,textEntries,validateSearchProjectionFields};async function resolveSearchRuntimeContext(prepared,global2){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const storedSettings=await readSettings(pmRoot);const settings=resolveSettingsWithSemanticRuntimeDefaults(storedSettings).settings;const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);const runtimeFieldRegistry=resolveRuntimeFieldRegistry(settings.schema);validateSearchProjectionFields(prepared.projection,runtimeFieldRegistry,prepared.query);const runtimeFieldFilters=collectRuntimeFilterValues(prepared.options,runtimeFieldRegistry,"search");const typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations());const providerResolution=resolveEmbeddingProviders(settings);const vectorResolution=resolveVectorStores(settings,pmRoot);const extensionSearchProvider=resolveExtensionSearchProvider(settings);const extensionVectorAdapter=resolveExtensionVectorAdapter(settings);const semanticWeightOverride=parseSemanticWeightOverride(prepared.options.semanticWeight);const queryExpansion=resolveQueryExpansionConfig(settings,providerResolution.active?.name??null);const rerank=resolveRerankConfig(settings,providerResolution.active?.model??toOptionalNonEmptyString(settings.search?.embedding_model)??"text-embedding-3-small");return{pmRoot,settings,statusRegistry,runtimeFieldRegistry,runtimeFieldFilters,typeRegistry,maxResults:resolveSearchMaxResults(settings),scoreThreshold:prepared.minScoreOverride??resolveSearchScoreThreshold(settings),semanticWeightProvided:prepared.options.semanticWeight!==void 0,semanticWeightOverride,hybridSemanticWeight:semanticWeightOverride??resolveHybridSemanticWeight(settings),tuning:resolveSearchTuning(settings),providerResolution,vectorResolution,extensionSearchProvider,extensionVectorAdapter,bm25Mode:resolveBuiltInBm25Mode({configuredProvider:toOptionalNonEmptyString(settings.search?.provider),hasEmbeddingProvider:providerResolution.active!==null,hasExtensionSearchProvider:extensionSearchProvider!==null}),queryExpansion,queryExpansionExtension:resolveQueryExpansionExtension(queryExpansion),rerank,rerankExtension:resolveRerankExtension(settings),...resolveRuntimeSearchMode({requested:prepared.options.mode,settings,configuredProvider:storedSettings.search?.provider??null,providerResolution,vectorResolution,extensionSearchProvider,extensionVectorAdapter})}}function resolveRuntimeSearchMode(params){const providerConfigured=resolveProviderConfigSource(params.providerResolution.active?.name,params.configuredProvider)==="configured";const builtInRunnable=providerConfigured&&(params.vectorResolution.active!==null||params.extensionVectorAdapter!==null);const semanticRunnable=params.extensionSearchProvider!==null||builtInRunnable;const resolution=resolveEffectiveSearchMode({requested:params.requested,settings:params.settings,semanticRunnable});return{effectiveMode:resolution.mode,modeSource:resolution.source}}async function loadFilteredSearchCorpus(prepared,runtime){const loadedDocuments=await loadDocuments(runtime.pmRoot,runtime.settings.item_format??"toon",runtime.typeRegistry.type_to_folder,runtime.settings.schema);const statusFilter=parseStatusFilterCsv(typeof prepared.options.status==="string"?prepared.options.status:void 0,runtime.statusRegistry,{strict:true});const lifecycleClassifier=lifecycleClassifierFromStatusRegistry(runtime.statusRegistry);const metadataFilteredDocuments=applyFilters(loadedDocuments.documents,prepared.options,runtime.typeRegistry,runtime.runtimeFieldFilters,statusFilter,lifecycleClassifier);return{warnings:loadedDocuments.warnings,allDocuments:loadedDocuments.documents,filteredDocuments:applyExactQueryFilters(metadataFilteredDocuments,prepared.normalizedQuery,{titleExact:prepared.titleExact,phraseExact:prepared.phraseExact||prepared.matchMode==="exact"})}}async function computeKeywordSearchHits(prepared,runtime,filteredDocuments){const linkedCorpusById=await collectLinkedCorpusById(prepared.includeLinked,runtime.effectiveMode,filteredDocuments);const applyCoverageBonus=prepared.matchMode==="or";return filteredDocuments.map(document=>buildHybridLexicalScore(document,prepared.tokens,prepared.normalizedQuery,prepared.includeLinked,linkedCorpusById,runtime.tuning,runtime.settings.id_prefix,applyCoverageBonus)).filter(entry=>entry!==null).filter(entry=>prepared.matchMode!=="and"||entry.matched_all_terms===true)}async function executeBuiltInBm25Search(prepared,runtime,filteredDocuments,keywordHits,warnings){if(runtime.bm25Mode===null||runtime.effectiveMode==="keyword"){return null}const hits=computeBuiltInBm25Hits({requestedMode:runtime.effectiveMode,query:prepared.query,filteredDocuments,keywordHits,corpusFields:resolveSearchCorpusFields(runtime.settings),bm25Params:resolveBm25Params(runtime.settings),hybridSemanticWeight:runtime.hybridSemanticWeight});if(runtime.bm25Mode==="auto-fallback"){warnings.push(`search_${runtime.effectiveMode}_offline_bm25:no_embedding_provider:using_lexical_bm25`)}return hits}async function executeExtensionSearchProvider(prepared,runtime,filteredDocuments,filteredById){if(!runtime.extensionSearchProvider){return null}const canUseBuiltInSemantic=runtime.providerResolution.active!==null&&(runtime.vectorResolution.active!==null||runtime.extensionVectorAdapter!==null);try{const providerResponse=await Promise.resolve(runtime.extensionSearchProvider.query({query:prepared.query,mode:runtime.effectiveMode,tokens:prepared.tokens,options:prepared.options,settings:runtime.settings,documents:filteredDocuments}));return normalizeExtensionProviderHits(runtime.extensionSearchProvider.providerName,providerResponse,filteredById)}catch(error){if(!canUseBuiltInSemantic){throw new PmCliError(`Extension search provider "${runtime.extensionSearchProvider.providerName}" failed: ${error instanceof Error?error.message:String(error)}`,EXIT_CODE.GENERIC_FAILURE)}return null}}function maybeApplyNoVectorFallback(effectiveMode,semanticResult,keywordHits,warnings){if(semanticResult.vectorMatchCount>0){return semanticResult.hits}warnings.push(`search_${effectiveMode}_degraded:no_vector_matches:results_are_lexical`);return effectiveMode==="semantic"?keywordHits:semanticResult.hits}async function prepareBuiltInSemanticSearch(runtime,effectiveMode,filteredDocuments,warnings,modeWasExplicit){const builtInSemanticWillRun=!runtime.extensionSearchProvider&&runtime.providerResolution.active!==null&&(runtime.vectorResolution.active!==null||runtime.extensionVectorAdapter!==null);if(modeWasExplicit&&builtInSemanticWillRun){await maybeEmitVectorIndexStaleWarning(runtime.pmRoot,filteredDocuments,warnings)}if(!runtime.extensionSearchProvider){requireSemanticDependencies(effectiveMode,runtime.providerResolution,runtime.vectorResolution,runtime.extensionVectorAdapter!==null)}}async function executeSemanticSearch(input){const{prepared,runtime,filteredDocuments,keywordHits,warnings,modeWasExplicit}=input;let hits=keywordHits;const bm25Hits=await executeBuiltInBm25Search(prepared,runtime,filteredDocuments,keywordHits,warnings);const semanticMode=runtime.effectiveMode;if(bm25Hits!==null||semanticMode==="keyword"){return{effectiveMode:runtime.effectiveMode,hits:bm25Hits??hits}}try{await prepareBuiltInSemanticSearch(runtime,semanticMode,filteredDocuments,warnings,modeWasExplicit);if(filteredDocuments.length===0||prepared.limit===0){return{effectiveMode:runtime.effectiveMode,hits:[]}}const filteredById=new Map(filteredDocuments.map(document=>[document.metadata.id,document]));hits=await executeExtensionSearchProvider(prepared,runtime,filteredDocuments,filteredById)??hits;if(hits===keywordHits){const{provider,vectorStore}=requireSemanticDependencies(semanticMode,runtime.providerResolution,runtime.vectorResolution,runtime.extensionVectorAdapter!==null);const semanticResult=await computeSemanticOrHybridHits({requestedMode:semanticMode,query:prepared.query,filteredDocuments,keywordHits,hybridSemanticWeight:runtime.hybridSemanticWeight,limit:prepared.limit,maxResults:runtime.maxResults,provider,vectorStore,extensionVectorAdapter:runtime.extensionVectorAdapter,queryExpansion:runtime.queryExpansion,queryExpansionExtension:runtime.queryExpansionExtension,rerank:runtime.rerank,rerankExtension:runtime.rerankExtension,warnings,settings:runtime.settings});hits=maybeApplyNoVectorFallback(semanticMode,semanticResult,keywordHits,warnings)}return{effectiveMode:runtime.effectiveMode,hits}}catch(error){warnings.push(buildExplicitSemanticFallbackWarning(runtime.effectiveMode,error));return{effectiveMode:"keyword",hits:keywordHits}}}function validateEmptySearchCursor(options){if(options.searchOptions.after!==void 0){decodeQueryCursor(options.searchOptions.after,createSearchCursorFingerprint(options))}}async function runSearch(rawQuery,rawOptions,global2){assertSearchPagingOptions(rawOptions);const prepared=prepareSearchInput(rawQuery,rawOptions);const runtime=await resolveSearchRuntimeContext(prepared,global2);const corpus=await loadFilteredSearchCorpus(prepared,runtime);const warnings=corpus.warnings;warnings.push(...prepared.inlineWarnings);const workspaceMemory=await readWorkspaceMemory(corpus.allDocuments.map(document=>document.metadata),{pmRoot:runtime.pmRoot,statusRegistry:runtime.statusRegistry,now:nowIso()});warnings.push(...workspaceMemory.warnings);const workspaceMemoryResult=searchWorkspaceMemoryReadResult(workspaceMemory,prepared.query);if(runtime.effectiveMode==="hybrid"&&runtime.semanticWeightProvided&&runtime.semanticWeightOverride===void 0){warnings.push("search_hybrid_semantic_weight_override_invalid:using_settings_default")}const responseBase={query:prepared.query,modeSource:runtime.modeSource,matchMode:prepared.matchMode,options:prepared.options,includeLinked:prepared.includeLinked,titleExact:prepared.titleExact,phraseExact:prepared.phraseExact,scoreThreshold:runtime.scoreThreshold,hybridSemanticWeight:runtime.hybridSemanticWeight,queryExpansion:runtime.queryExpansion,rerank:runtime.rerank,projection:prepared.projection,warnings,runtimeFieldFilters:runtime.runtimeFieldFilters};if(runtime.effectiveMode==="keyword"&&(corpus.filteredDocuments.length===0||prepared.limit===0&&!prepared.countOnly)){validateEmptySearchCursor({query:prepared.query,mode:runtime.effectiveMode,searchOptions:prepared.options,pmRoot:runtime.pmRoot});return withSearchWorkspaceMemory(buildEmptySearchResultFromContext({...responseBase,effectiveMode:runtime.effectiveMode},prepared.countOnly),workspaceMemoryResult)}const keywordHits=await computeKeywordSearchHits(prepared,runtime,corpus.filteredDocuments);const modeResult=await executeSemanticSearch({prepared,runtime,filteredDocuments:corpus.filteredDocuments,keywordHits,warnings,modeWasExplicit:prepared.modeWasExplicit});if(modeResult.effectiveMode!=="keyword"&&modeResult.hits.length===0&&(corpus.filteredDocuments.length===0||prepared.limit===0&&!prepared.countOnly)){validateEmptySearchCursor({query:prepared.query,mode:modeResult.effectiveMode,searchOptions:prepared.options,pmRoot:runtime.pmRoot});return withSearchWorkspaceMemory(buildEmptySearchResultFromContext({...responseBase,effectiveMode:modeResult.effectiveMode},prepared.countOnly),workspaceMemoryResult)}const thresholded=modeResult.hits.filter(entry=>entry.exact_id_match===true||entry.score>=runtime.scoreThreshold);const sorted=sortHits(thresholded,runtime.statusRegistry);const total=sorted.length;const page=resolveSearchPage({pmRoot:runtime.pmRoot,sorted,query:prepared.query,mode:modeResult.effectiveMode,searchOptions:prepared.options,limit:prepared.limit??runtime.maxResults});const response={...responseBase,effectiveMode:modeResult.effectiveMode};if(prepared.countOnly){return withSearchWorkspaceMemory(buildCountOnlySearchResult(response,total),workspaceMemoryResult)}const{hits:projectedHits,projection:effectiveProjection}=attachSearchHighlights(prepared,corpus.filteredDocuments,page.limited);const projectedItems=projectSearchHits(projectedHits,effectiveProjection);return withSearchWorkspaceMemory(buildSearchResultForHits(response,projectedItems,total,page.limited.length,effectiveProjection,page.pageExtras),workspaceMemoryResult)}export{_testOnlySearchCommand,classifyImplicitSemanticFallbackReason2 as classifyImplicitSemanticFallbackReason,collectErrorCauseCodes2 as collectErrorCauseCodes,formatVectorIndexRecoveryWarnings,resolveEffectiveSearchMode2 as resolveEffectiveSearchMode,resolveHybridSemanticWeight2 as resolveHybridSemanticWeight,resolveSearchMaxResults2 as resolveSearchMaxResults,resolveSearchScoreThreshold2 as resolveSearchScoreThreshold,resolveSearchTuning2 as resolveSearchTuning,resolveVectorIndexRecovery,runSearch};
2
2
  //# sourceMappingURL=search.js.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @module sdk/read-output/options
3
+ *
4
+ * Shares universal presentation controls without loading read execution code.
5
+ */
6
+ /** Canonical field, amount, cost and encoding controls for every read surface. */
7
+ export declare const READ_OUTPUT_DIMENSION_FLAGS: {
8
+ readonly include: "--output-include";
9
+ readonly amount: "--output-limit";
10
+ readonly cost: "--output-budget";
11
+ readonly encoding: "--output-format";
12
+ };
13
+ /** Presentation-only controls composing universal output shaping across calls. */
14
+ export declare const READ_OUTPUT_COMPOSITION_FLAGS: readonly ["--output-session", "--output-cursor", "--output-row-contract"];
@@ -0,0 +1,2 @@
1
+ !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d2e9c5c4-d817-511d-b719-1d4eb70d0b42")}catch(e2){}})();const READ_OUTPUT_DIMENSION_FLAGS={include:"--output-include",amount:"--output-limit",cost:"--output-budget",encoding:"--output-format"};const READ_OUTPUT_COMPOSITION_FLAGS=Object.freeze(["--output-session","--output-cursor","--output-row-contract"]);export{READ_OUTPUT_COMPOSITION_FLAGS,READ_OUTPUT_DIMENSION_FLAGS};
2
+ //# sourceMappingURL=options.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f960f91a-c5a7-5114-b4d2-7d562a8b6fdb")}catch(e2){}})();import{formatBuiltInOutput}from"../core/output/output.js";import{countReadOutputRows,readOutputBudgetCollections}from"./read-output-rows.js";const MAX_ESTIMATE_ITERATIONS=8;const MAX_COMPACTION_ITERATIONS=64;const RECOVERY_MARGIN_NUMERATOR=5;const RECOVERY_MARGIN_DENOMINATOR=4;const RECOVERY_ROUNDING_TOKENS=100;function projectReadOutputItemToBrief(command,options,result){if(command!=="get"||!isRecord(result.item)||["fields","outputInclude","output_include","outputCursor","output_cursor"].some(key=>options[key]!==void 0)||options.full===true||options.tree===true||options.depth!==void 0&&options.depth!=="standard")return void 0;const item=result.item;const sections=["linked","claim_state","schedule"];const omitted=sections.filter(key=>Object.hasOwn(result,key));const projected=Object.fromEntries(Object.entries(result).filter(([key])=>!sections.includes(key)));projected.item=Object.fromEntries(Object.entries(item).filter(([key])=>key!=="body"));if(Object.hasOwn(item,"body"))omitted.push("body");const previous=isRecord(result.omission_receipt)&&Array.isArray(result.omission_receipt.omitted_field_groups)?result.omission_receipt.omitted_field_groups:[];const groups=[...previous,...omitted.map(name=>({name,restore_with:`--fields ${name}`}))];projected.omission_receipt={has_omissions:groups.length>0,omitted_field_group_count:groups.length,omitted_field_groups:groups};return projected}function resolveReadOutputRecoveryBudget(input){const binding=Math.trunc(input.effective_budget_tokens);const measured=Math.trunc(input.measured_result_tokens);if(!Number.isSafeInteger(binding)||binding<=0||!Number.isSafeInteger(measured)||measured<=0){return{output_budget:"unbounded",recovery_budget_multiplier:null,rule_version:"v1"}}const baseline=Math.max(binding+1,measured);const withMargin=Math.ceil(baseline*RECOVERY_MARGIN_NUMERATOR/RECOVERY_MARGIN_DENOMINATOR);const rounded=Math.ceil(withMargin/RECOVERY_ROUNDING_TOKENS)*RECOVERY_ROUNDING_TOKENS;if(!Number.isSafeInteger(rounded)){return{output_budget:"unbounded",recovery_budget_multiplier:null,rule_version:"v1"}}return{output_budget:rounded,recovery_budget_multiplier:rounded/binding,rule_version:"v1"}}function preserveReadOutputRowContract(source,target,suppress=false){const descriptor=Object.getOwnPropertyDescriptor(source,"row_contract");if(descriptor&&(suppress||descriptor.enumerable===false)){Object.defineProperty(target,"row_contract",{...descriptor,enumerable:false})}}function estimateReadOutputTokens(result,format){const rendered=format===void 0?JSON.stringify(result):formatBuiltInOutput(result,format);return Math.ceil(Buffer.byteLength(rendered,"utf8")/4)}function isRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function compactStrings(value,state,preserveStrings=false){if(typeof value==="string"){if(preserveStrings||value.length<=240)return value;state.compacted=true;return`${value.slice(0,240)}\u2026`}if(Array.isArray(value)){return value.map(entry=>compactStrings(entry,state,preserveStrings))}if(!isRecord(value))return value;return Object.fromEntries(Object.entries(value).map(([key,entry])=>[key,compactStrings(entry,state,preserveStrings)]))}function updateReadOutputReceiptEstimate(result,receipt,format){let estimate=receipt.estimated_tokens;for(let iteration=0;iteration<MAX_ESTIMATE_ITERATIONS;iteration+=1){receipt.estimated_tokens=estimate;const measured=estimateReadOutputTokens(result,format);if(measured===estimate)return;estimate=measured}receipt.estimated_tokens=estimate}function selectCompactionCollection(result,minimumRowsByPath){return readOutputBudgetCollections(result).filter(collection=>{const length=Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length;return length>Math.max(1,minimumRowsByPath.get(collection.path)??0)}).map(collection=>({collection,length:Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length})).sort((left,right)=>right.length-left.length||left.collection.path.localeCompare(right.collection.path))[0]?.collection}function compactRowsToBudget(result,receipt,budget,minimumRowsByPath,format,finalize){for(let iteration=0;iteration<MAX_COMPACTION_ITERATIONS;iteration+=1){finalize?.(result);updateReadOutputReceiptEstimate(result,receipt,format);if(receipt.estimated_tokens<=budget)return;const candidate=selectCompactionCollection(result,minimumRowsByPath);if(!candidate)return;const minimumRows=Math.max(1,minimumRowsByPath.get(candidate.path)??0);const values=Array.isArray(candidate.value)?[...candidate.value]:Object.entries(candidate.value);const retainPrefix=length=>{if(Array.isArray(candidate.value)){candidate.value.length=length;for(let index=0;index<length;index+=1)candidate.value[index]=values[index]}else{for(const key of Object.keys(candidate.value))delete candidate.value[key];Object.defineProperties(candidate.value,Object.getOwnPropertyDescriptors(Object.fromEntries(values.slice(0,length))))}if(typeof result.count==="number")result.count=countReadOutputRows(result);if(candidate.path==="items")result.applied_limit=length;finalize?.(result);updateReadOutputReceiptEstimate(result,receipt,format)};receipt.rows_compacted=true;receipt.compacted_row_paths=[...new Set([...receipt.compacted_row_paths??[],candidate.path])].sort((left,right)=>left.localeCompare(right));result.has_more=true;result.truncated=true;let low=minimumRows;let high=values.length-1;let retained=minimumRows;while(low<=high){const middle=Math.floor((low+high)/2);retainPrefix(middle);if(receipt.estimated_tokens<=budget){retained=middle;low=middle+1}else{high=middle-1}}retainPrefix(retained)}}function compactReadOutputToBudget(result,receipt,budget,minimumRowsByPath=new Map,format,finalize,preserveStrings=false){const stringCompactionState={compacted:false};const compacted=Object.fromEntries(Object.entries(result).map(([key,value])=>[key,compactStrings(value,stringCompactionState,preserveStrings&&key==="diff")]));preserveReadOutputRowContract(result,compacted);receipt.strings_compacted=stringCompactionState.compacted;compacted.read_output=receipt;compactRowsToBudget(compacted,receipt,budget,minimumRowsByPath,format,finalize);updateReadOutputReceiptEstimate(compacted,receipt,format);return compacted}export{compactReadOutputToBudget,estimateReadOutputTokens,preserveReadOutputRowContract,projectReadOutputItemToBrief,resolveReadOutputRecoveryBudget,updateReadOutputReceiptEstimate};
1
+ !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="29f010b6-6214-5669-8c2e-0a0833496df3")}catch(e2){}})();import{formatBuiltInOutput}from"../core/output/output.js";import{countReadOutputRows,readOutputBudgetCollections}from"./read-output-rows.js";const MAX_ESTIMATE_ITERATIONS=8;const MAX_COMPACTION_ITERATIONS=64;const RECOVERY_MARGIN_NUMERATOR=5;const RECOVERY_MARGIN_DENOMINATOR=4;const RECOVERY_ROUNDING_TOKENS=100;function projectReadOutputItemToBrief(command,options,result){if(command!=="get"||!isRecord(result.item)||["fields","outputInclude","output_include","outputCursor","output_cursor"].some(key=>options[key]!==void 0)||options.full===true||options.tree===true||options.depth!==void 0&&options.depth!=="standard")return void 0;const item=result.item;const sections=["linked","claim_state","schedule"];const omitted=sections.filter(key=>Object.hasOwn(result,key));const projected=Object.fromEntries(Object.entries(result).filter(([key])=>!sections.includes(key)));projected.item=Object.fromEntries(Object.entries(item).filter(([key])=>key!=="body"));if(Object.hasOwn(item,"body"))omitted.push("body");const previous=isRecord(result.omission_receipt)&&Array.isArray(result.omission_receipt.omitted_field_groups)?result.omission_receipt.omitted_field_groups:[];const groups=[...previous,...omitted.map(name=>({name,restore_with:`--fields ${name}`}))];projected.omission_receipt={has_omissions:groups.length>0,omitted_field_group_count:groups.length,omitted_field_groups:groups};return projected}function resolveReadOutputRecoveryBudget(input){const binding=Math.trunc(input.effective_budget_tokens);const measured=Math.trunc(input.measured_result_tokens);if(!Number.isSafeInteger(binding)||binding<=0||!Number.isSafeInteger(measured)||measured<=0){return{output_budget:"unbounded",recovery_budget_multiplier:null,rule_version:"v1"}}const baseline=Math.max(binding+1,measured);const withMargin=Math.ceil(baseline*RECOVERY_MARGIN_NUMERATOR/RECOVERY_MARGIN_DENOMINATOR);const rounded=Math.ceil(withMargin/RECOVERY_ROUNDING_TOKENS)*RECOVERY_ROUNDING_TOKENS;if(!Number.isSafeInteger(rounded)){return{output_budget:"unbounded",recovery_budget_multiplier:null,rule_version:"v1"}}return{output_budget:rounded,recovery_budget_multiplier:rounded/binding,rule_version:"v1"}}function preserveReadOutputRowContract(source,target,suppress=false){const descriptor=Object.getOwnPropertyDescriptor(source,"row_contract");if(descriptor&&(suppress||descriptor.enumerable===false)){Object.defineProperty(target,"row_contract",{...descriptor,enumerable:false})}}function estimateReadOutputTokens(result,format){const rendered=format===void 0?JSON.stringify(result):formatBuiltInOutput(result,format);return Math.ceil(Buffer.byteLength(rendered,"utf8")/4)}function isRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function compactStrings(value,state,preserveStrings=false){if(typeof value==="string"){if(preserveStrings||value.length<=240)return value;state.compacted=true;return`${value.slice(0,240)}\u2026`}if(Array.isArray(value)){return value.map(entry=>compactStrings(entry,state,preserveStrings))}if(!isRecord(value))return value;return Object.fromEntries(Object.entries(value).map(([key,entry])=>[key,compactStrings(entry,state,preserveStrings||key==="focus_row_states")]))}function updateReadOutputReceiptEstimate(result,receipt,format){let estimate=receipt.estimated_tokens;for(let iteration=0;iteration<MAX_ESTIMATE_ITERATIONS;iteration+=1){receipt.estimated_tokens=estimate;const measured=estimateReadOutputTokens(result,format);if(measured===estimate)return;estimate=measured}receipt.estimated_tokens=estimate}function selectCompactionCollection(result,minimumRowsByPath){return readOutputBudgetCollections(result).filter(collection=>{const length=Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length;return length>Math.max(1,minimumRowsByPath.get(collection.path)??0)}).map(collection=>({collection,length:Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length})).sort((left,right)=>right.length-left.length||left.collection.path.localeCompare(right.collection.path))[0]?.collection}function compactRowsToBudget(result,receipt,budget,minimumRowsByPath,format,finalize){for(let iteration=0;iteration<MAX_COMPACTION_ITERATIONS;iteration+=1){finalize?.(result);updateReadOutputReceiptEstimate(result,receipt,format);if(receipt.estimated_tokens<=budget)return;const candidate=selectCompactionCollection(result,minimumRowsByPath);if(!candidate)return;const minimumRows=Math.max(1,minimumRowsByPath.get(candidate.path)??0);const values=Array.isArray(candidate.value)?[...candidate.value]:Object.entries(candidate.value);const retainPrefix=length=>{if(Array.isArray(candidate.value)){candidate.value.length=length;for(let index=0;index<length;index+=1)candidate.value[index]=values[index]}else{for(const key of Object.keys(candidate.value))delete candidate.value[key];Object.defineProperties(candidate.value,Object.getOwnPropertyDescriptors(Object.fromEntries(values.slice(0,length))))}if(typeof result.count==="number")result.count=countReadOutputRows(result);if(candidate.path==="items")result.applied_limit=length;finalize?.(result);updateReadOutputReceiptEstimate(result,receipt,format)};receipt.rows_compacted=true;receipt.compacted_row_paths=[...new Set([...receipt.compacted_row_paths??[],candidate.path])].sort((left,right)=>left.localeCompare(right));result.has_more=true;result.truncated=true;let low=minimumRows;let high=values.length-1;let retained=minimumRows;while(low<=high){const middle=Math.floor((low+high)/2);retainPrefix(middle);if(receipt.estimated_tokens<=budget){retained=middle;low=middle+1}else{high=middle-1}}retainPrefix(retained)}}function compactReadOutputToBudget(result,receipt,budget,minimumRowsByPath=new Map,format,finalize,preserveStrings=false){const stringCompactionState={compacted:false};const compacted=Object.fromEntries(Object.entries(result).map(([key,value])=>[key,compactStrings(value,stringCompactionState,preserveStrings&&key==="diff")]));preserveReadOutputRowContract(result,compacted);receipt.strings_compacted=stringCompactionState.compacted;compacted.read_output=receipt;compactRowsToBudget(compacted,receipt,budget,minimumRowsByPath,format,finalize);updateReadOutputReceiptEstimate(compacted,receipt,format);return compacted}export{compactReadOutputToBudget,estimateReadOutputTokens,preserveReadOutputRowContract,projectReadOutputItemToBrief,resolveReadOutputRecoveryBudget,updateReadOutputReceiptEstimate};
2
2
  //# sourceMappingURL=read-output-budget.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="72058f24-2965-5a9a-994d-e84a9af0c558")}catch(e2){}})();import{resolvePmHistoryOperation}from"./cli-contracts/command-aliases.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{compactReadOutputToBudget,estimateReadOutputTokens,projectReadOutputItemToBrief,preserveReadOutputRowContract,resolveReadOutputRecoveryBudget,updateReadOutputReceiptEstimate}from"./read-output-budget.js";import{resolveReadOutputRecoveryBudget as resolveReadOutputRecoveryBudget2}from"./read-output-budget.js";import{resolvePmCommandOutputBudget}from"./cli-contracts/agent-output-contracts.js";import{boundReadOutputRows,countReadOutputRows,mapReadOutputRows,readOutputBudgetCollections,readOutputContinuationRowCollections,readOutputRowPaths,readOutputRowCollections}from"./read-output-rows.js";import{applyReadOutputContinuation,decodeReadOutputContinuationCursor,encodeReadOutputContinuationCursor,prioritizeAssuranceAssertions,readOutputCollectionFingerprint}from"./read-output/continuation.js";import{decodeReadOutputContinuationCursor as decodeReadOutputContinuationCursor2,encodeReadOutputContinuationCursor as encodeReadOutputContinuationCursor2,PM_READ_OUTPUT_CONTINUATION_FINGERPRINT_POLICIES,readOutputCollectionFingerprint as readOutputCollectionFingerprint2}from"./read-output/continuation.js";import{applyReadOutputSessionReferences,attachReadOutputSessionReceipt,parseReadOutputSession,readOutputSessionRemainingTokens}from"./read-output-session.js";import{decodeQueryCursorEnvelope,encodeQueryCursor}from"./pagination.js";import{READ_OUTPUT_INVOCATION_PROVENANCE}from"./read-output/provenance.js";const PM_READ_OUTPUT_DIMENSIONS=["include","amount","cost","encoding"];const PM_READ_OUTPUT_SURFACES=["list","context","search","get","next","health","deps","graph","history","activity","validate","events","contracts","comments","notes","files","docs","stats","aggregate","duplicates","package-catalog","package-manage","comments-audit","assurance"];const READ_OUTPUT_PRECEDENCE=["canonical","legacy","intent","default"];const CANONICAL_OPTIONS={include:"--output-include",amount:"--output-limit",cost:"--output-budget",encoding:"--output-format"};const PM_READ_OUTPUT_OPTION_FLAGS=Object.freeze(PM_READ_OUTPUT_DIMENSIONS.map(dimension=>CANONICAL_OPTIONS[dimension]));const PM_READ_OUTPUT_COMPOSITION_OPTION_FLAGS=Object.freeze(["--output-session","--output-cursor","--output-row-contract"]);const LEGACY_FLAGS_BY_COMMAND={list:{include:["--brief","--compact","--fields","--full"],amount:["--after","--limit","--no-truncate"],cost:["--token-budget"],encoding:["--format","--stream"]},context:{include:["--fields","--section"],amount:["--after","--depth","--limit"],cost:["--token-budget"],encoding:["--format"]},search:{include:["--compact","--fields","--full"],amount:["--after","--limit"],cost:["--token-budget"],encoding:["--format"]},get:{include:["--fields","--full"],amount:["--depth"],cost:["--token-budget"],encoding:["--format"]},next:{amount:["--blocked-limit","--limit"],cost:["--token-budget"],encoding:["--format"]},health:{include:["--brief","--check-only","--full","--summary"]},deps:{include:["--collapse","--full","--summary"],amount:["--edge-limit","--max-depth","--node-limit"],cost:["--token-budget"],encoding:["--format"]},graph:{include:["--full","--summary"],amount:["--after","--limit","--max-depth","--max-paths"]},history:{include:["--compact","--full"],amount:["--limit"],encoding:["--format"]},activity:{include:["--compact","--full"],amount:["--limit","--unbounded"],encoding:["--stream"]},validate:{include:["--counts","--full"]},events:{include:["--full"],amount:["--limit"],encoding:["--follow"]},contracts:{include:["--full","--summary"]},comments:{amount:["--limit"]},notes:{amount:["--limit"]},files:{amount:["--limit","--no-truncate","--offset"]},docs:{},stats:{},aggregate:{},duplicates:{amount:["--limit"]},"package-catalog":{},"package-manage":{},"comments-audit":{},assurance:{}};const VALUE_BEARING_INCLUDE_ALIASES=new Set(["--collapse","--fields","--section"]);const BEHAVIOR_PRESERVING_MIGRATION_HINTS=Object.freeze({"--after":"--after retains cursor-position semantics; use --output-limit <n> separately to bound returned rows.","--check-only":"--check-only retains health side-effect semantics; --output-include does not suppress vector refresh.","--collapse":"--collapse retains dependency grouping semantics; --output-include does not replace it.","--depth":"--depth retains traversal or detail-depth semantics; --output-limit does not replace it.","--follow":"--follow retains event-tail semantics; --output-format does not enable following.","--max-depth":"--max-depth retains graph traversal-depth semantics; --output-limit does not replace it.","--max-paths":"--max-paths retains graph path-search semantics; use --output-limit separately to bound returned rows.","--no-truncate":"--no-truncate is a compatibility alias; prefer --output-limit unbounded.","--offset":"--offset retains positional pagination semantics; use --output-limit separately to bound returned rows.","--stream":"--stream retains command streaming semantics; --output-format selects only static result encoding.","--unbounded":"--unbounded is a compatibility alias; prefer --output-limit unbounded."});function flagSelector(flag){return flag.slice(2).replaceAll("-","_")}function migrationHint(flag,dimension){const behaviorHint=BEHAVIOR_PRESERVING_MIGRATION_HINTS[flag];if(behaviorHint!==void 0)return behaviorHint;const suffix=dimension==="include"?VALUE_BEARING_INCLUDE_ALIASES.has(flag)?"<csv>":flagSelector(flag):dimension==="amount"?"<n>":dimension==="cost"?"<tokens>":"<toon|json>";return`${flag} is a compatibility alias; prefer ${CANONICAL_OPTIONS[dimension]} ${suffix}.`}function buildSurfaceContract(command){const legacy=LEGACY_FLAGS_BY_COMMAND[command];const dimensions=Object.freeze(Object.fromEntries(PM_READ_OUTPUT_DIMENSIONS.map(dimension=>[dimension,Object.freeze({dimension,canonical_option:CANONICAL_OPTIONS[dimension],applicable:true,inapplicable_reason:null,legacy_aliases:Object.freeze((legacy[dimension]??[]).map(flag=>Object.freeze({flag,semantics:BEHAVIOR_PRESERVING_MIGRATION_HINTS[flag]===void 0?"replacement":"behavior_preserving",migration_hint:migrationHint(flag,dimension),visibility:"hidden_alias"})))})])));return Object.freeze({command,dimensions,precedence:READ_OUTPUT_PRECEDENCE,budget_retention_policy:command==="assurance"?"verdict_priority":"ordered_prefix",projection_modes:Object.freeze([...readOutputIncludeModeOptions(command).keys()])})}const PM_READ_OUTPUT_SURFACE_CONTRACTS=Object.freeze(PM_READ_OUTPUT_SURFACES.map(buildSurfaceContract));const SURFACE_CONTRACT_BY_COMMAND=new Map(PM_READ_OUTPUT_SURFACE_CONTRACTS.map(contract=>[contract.command,contract]));function resolveReadOutputSurface(command,options={}){const normalizedCommand=resolvePmHistoryOperation(command.trim().toLowerCase());const packageMode=normalizedCommand==="package catalog"||normalizedCommand==="packages catalog"||normalizedCommand==="package-catalog"||(normalizedCommand==="package"||normalizedCommand==="packages"||normalizedCommand==="extension")&&(options.catalog===true||options.target==="catalog"||options.action==="catalog");const root=packageMode?"package-catalog":normalizedCommand==="package manage"||normalizedCommand==="package-manage"?"package-manage":normalizedCommand.split(" ")[0];const normalized=root.startsWith("list-")?"list":root==="ctx"?"context":root;return PM_READ_OUTPUT_SURFACES.includes(normalized)?normalized:void 0}const CANONICAL_OPTION_KEYS=["outputInclude","output_include","outputLimit","output_limit","outputBudget","output_budget","outputFormat","output_format","outputSession","output_session","outputCursor","output_cursor","outputRowContract","output_row_contract"];const HYBRID_READ_MUTATION_KEYS={comments:["add","body","stdin","file","edit","delete"],notes:["add","addJson","stdin","file","edit","delete"],files:["add","addGlob","remove","migrate","apply","note"],docs:["add","addGlob","remove","migrate","note"],"package-catalog":["activate","adopt","adoptAll","deactivate","doctor","init","install","manage","migrate","reload","scaffold","uninstall"]};function hasCanonicalReadOutputOptions(options){return CANONICAL_OPTION_KEYS.some(key=>key!=="outputFormat"&&key!=="output_format"&&options[key]!==void 0)}const READ_OUTPUT_VALUE_VALIDATORS=[{keys:["outputInclude","output_include"],valid:value=>stringList(value)!==void 0,message:"--output-include requires at least one comma-separated field or section."},{keys:["outputLimit","output_limit"],valid:value=>value==="unbounded"||positiveInteger(value)!==void 0,message:"--output-limit must be a positive integer or unbounded."},{keys:["outputBudget","output_budget"],valid:value=>value==="unbounded"||positiveInteger(value)!==void 0,message:"--output-budget must be a positive integer or unbounded."},{keys:["outputSession","output_session"],valid:value=>{parseReadOutputSession(value);return true},message:"--output-session must be a valid session-state object."},{keys:["outputCursor","output_cursor"],valid:value=>typeof value==="string"&&value.trim().length>0,message:"--output-cursor requires a non-empty continuation cursor."}];function validateReadOutputOptions(command,options){const encoding=options.outputFormat??options.output_format;if(encoding!==void 0&&encoding!=="json"&&encoding!=="toon"){throw new PmCliError("--output-format must be toon or json.",EXIT_CODE.USAGE)}if(!hasCanonicalReadOutputOptions(options))return;const normalizedCommand=resolveReadOutputSurface(command,options);if(!normalizedCommand){throw new PmCliError(`Universal output controls apply only to read commands; ${command||"this command"} is not a read surface.`,EXIT_CODE.USAGE)}if((HYBRID_READ_MUTATION_KEYS[normalizedCommand]??[]).some(key=>options[key]!==void 0&&options[key]!==false)){throw new PmCliError(`Universal output controls cannot be combined with a ${normalizedCommand} mutation.`,EXIT_CODE.USAGE)}for(const validator of READ_OUTPUT_VALUE_VALIDATORS){const value=validator.keys.map(key=>options[key]).find(entry=>entry!==void 0);if(value!==void 0&&!validator.valid(value)){throw new PmCliError(validator.message,EXIT_CODE.USAGE)}}}function readOutputIncludeModeOptions(command){const surface=resolveReadOutputSurface(command);if(!surface)return new Map;return new Map((LEGACY_FLAGS_BY_COMMAND[surface].include??[]).filter(flag=>!VALUE_BEARING_INCLUDE_ALIASES.has(flag)&&BEHAVIOR_PRESERVING_MIGRATION_HINTS[flag]===void 0).map(flag=>[flagSelector(flag),optionKey(flag)]))}function applyReadOutputIncludeModes(command,includeValue,commandOptions){const requested=stringList(includeValue)??[];const modeOptions=readOutputIncludeModeOptions(command);const selectors=[];const modes=[];const optionsWithProvenance=commandOptions;const existingProvenance=optionsWithProvenance[READ_OUTPUT_INVOCATION_PROVENANCE];const canonicalModes=new Set(existingProvenance?.canonical_include_modes??[]);const explicitLegacyAliases=new Set(existingProvenance?.explicit_legacy_aliases??[]);for(const token of requested){const option=modeOptions.get(token);if(option===void 0){selectors.push(token);continue}const legacyFlag=`--${token.replaceAll("_","-")}`;if(isRequestedOption(readOption(commandOptions,legacyFlag))){explicitLegacyAliases.add(legacyFlag)}commandOptions[option]=true;modes.push(token);canonicalModes.add(token)}const forwardedGetFieldSelectors=resolveReadOutputSurface(command)==="get"?selectors.filter(selector=>selector!=="item"):[];const forwardedGetFields=forwardedGetFieldSelectors.length>0;if(forwardedGetFields){commandOptions.fields=[...new Set([...stringList(commandOptions.fields)??[],...forwardedGetFieldSelectors])].join(",");canonicalModes.add("fields")}if(modes.length>0||forwardedGetFields){optionsWithProvenance[READ_OUTPUT_INVOCATION_PROVENANCE]={canonical_include_modes:[...canonicalModes],explicit_legacy_aliases:[...explicitLegacyAliases],...existingProvenance?.cli_invocation_observed===true?{cli_invocation_observed:true}:{}}}return{selectors,modes}}function normalizeReadOutputIncludeModeOptions(command,options){const include=options.outputInclude??options.output_include;if(include===void 0)return;const{selectors,modes}=applyReadOutputIncludeModes(command,include,options);if(modes.length===0)return;const residual=selectors.length>0?selectors.join(","):void 0;options.outputInclude=residual;if(Object.hasOwn(options,"output_include")){options.output_include=residual}}function optionKey(flag){return flag.slice(2).replace(/-([a-z])/gu,(_,character)=>character.toUpperCase())}function readOption(options,flag){const key=optionKey(flag);if(Object.hasOwn(options,key))return options[key];const snakeKey=flag.slice(2).replaceAll("-","_");if(Object.hasOwn(options,snakeKey))return options[snakeKey];if(flag==="--no-truncate"&&options.truncate===false)return true;return void 0}function isRequestedOption(value){return value!==void 0&&value!==false&&value!==null}function stringList(value){const values=Array.isArray(value)?value:[value];const normalized=values.flatMap(entry=>typeof entry==="string"?entry.split(","):[]).map(entry=>entry.trim()).filter(Boolean);return normalized.length>0?[...new Set(normalized)]:void 0}function positiveInteger(value){const parsed=typeof value==="number"?value:typeof value==="string"&&/^\d+$/u.test(value.trim())?Number(value):Number.NaN;return Number.isSafeInteger(parsed)&&parsed>0?parsed:void 0}function resolveLegacyDimension(contract,options,usable,ignore){for(const alias of contract.legacy_aliases){if(ignore(alias.flag))continue;const value=readOption(options,alias.flag);const candidate={value,flag:alias.flag};if(isRequestedOption(value)&&usable(candidate))return candidate}return void 0}function resolveIncludeValue(canonical,legacy){const canonicalList=stringList(canonical);if(canonicalList)return{source:"canonical",value:canonicalList};if(!legacy)return void 0;return{source:"legacy",value:stringList(legacy.value)??[flagSelector(legacy.flag)]}}function resolveAmountValue(canonical,legacy){if(canonical==="unbounded"){return{source:"canonical",value:"unbounded"}}const canonicalLimit=positiveInteger(canonical);if(canonicalLimit!==void 0){return{source:"canonical",value:canonicalLimit}}if(!legacy)return void 0;if(legacy.flag==="--no-truncate"||legacy.flag==="--unbounded"){return{source:"legacy",value:"unbounded"}}const legacyLimit=positiveInteger(legacy.value);return legacyLimit===void 0?void 0:{source:"legacy",value:legacyLimit}}function resolveCostValue(canonical,legacy){if(canonical==="unbounded"){return{source:"canonical",value:"unbounded"}}const canonicalBudget=positiveInteger(canonical);if(canonicalBudget!==void 0){return{source:"canonical",value:canonicalBudget}}if(!legacy)return void 0;const legacyBudget=positiveInteger(legacy.value);return legacyBudget===void 0?void 0:{source:"legacy",value:legacyBudget}}function resolveEncodingValue(canonical,legacy){if(canonical==="json"||canonical==="toon"){return{source:"canonical",value:canonical}}if(!legacy)return void 0;if(legacy.flag==="--stream"||legacy.flag==="--follow"){return{source:"legacy",value:"stream"}}return legacy.value==="json"||legacy.value==="toon"?{source:"legacy",value:legacy.value}:void 0}function shouldIgnoreReadOutputLegacyAlias(provenance,dimension,flag){if(!provenance)return false;const explicitLegacyAliases=new Set(provenance.explicit_legacy_aliases);if(provenance.cli_invocation_observed===true||provenance.sdk_invocation_observed===true){return!explicitLegacyAliases.has(flag)}const forwardedIncludeAliases=new Set(provenance.canonical_include_modes.map(mode=>`--${mode.replaceAll("_","-")}`));return dimension==="include"&&forwardedIncludeAliases.has(flag)&&!explicitLegacyAliases.has(flag)}function hasCompleteReadOutputIntent(command,legacyByDimension,provenance){const root=command.trim().toLowerCase().replaceAll(/\s+/gu," ").split(" ")[0];return root==="list-all"||legacyByDimension.amount?.flag==="--no-truncate"||legacyByDimension.include?.flag==="--full"||provenance?.canonical_include_modes.includes("full")===true}function canonicalReadOutputOptionsUsed(resolvedByDimension,provenance){return PM_READ_OUTPUT_DIMENSIONS.flatMap(dimension=>resolvedByDimension[dimension]?.source==="canonical"||dimension==="include"&&(provenance?.canonical_include_modes.length??0)>0?[CANONICAL_OPTIONS[dimension]]:[])}function resolveReadOutputDimensions(command,options){const normalizedCommand=resolveReadOutputSurface(command,options);if(!normalizedCommand)return void 0;const contract=SURFACE_CONTRACT_BY_COMMAND.get(normalizedCommand);const invocationProvenance=options[READ_OUTPUT_INVOCATION_PROVENANCE];const legacyResolvers={include:candidate=>resolveIncludeValue(void 0,candidate),amount:candidate=>resolveAmountValue(void 0,candidate),cost:candidate=>resolveCostValue(void 0,candidate),encoding:candidate=>resolveEncodingValue(void 0,candidate)};const legacyByDimension=Object.fromEntries(PM_READ_OUTPUT_DIMENSIONS.map(dimension=>[dimension,resolveLegacyDimension(contract.dimensions[dimension],options,candidate=>legacyResolvers[dimension](candidate)!==void 0,flag=>shouldIgnoreReadOutputLegacyAlias(invocationProvenance,dimension,flag))]));const legacyAliasesUsed=PM_READ_OUTPUT_DIMENSIONS.flatMap(dimension=>{const resolved=legacyByDimension[dimension];return resolved?[resolved.flag]:[]});const migrationHints=PM_READ_OUTPUT_DIMENSIONS.flatMap(dimension=>{const resolved=legacyByDimension[dimension];if(!resolved)return[];const alias=contract.dimensions[dimension].legacy_aliases.find(entry=>entry.flag===resolved.flag);return[alias.migration_hint]});const encoding=resolveEncodingValue(options.outputFormat??options.output_format,legacyByDimension.encoding);const include=resolveIncludeValue(options.outputInclude??options.output_include,legacyByDimension.include);const amount=resolveAmountValue(options.outputLimit??options.output_limit,legacyByDimension.amount);const explicitCost=resolveCostValue(options.outputBudget??options.output_budget,legacyByDimension.cost);const completeResultIntent=hasCompleteReadOutputIntent(command,legacyByDimension,invocationProvenance);const budget=resolvePmCommandOutputBudget(command,{generateFallback:true});const resolvedOutputFormat=encoding?.value==="json"||options.resolvedOutputFormat==="json"?"json":"toon";const cost=explicitCost??(completeResultIntent?{source:"intent",value:"unbounded"}:{source:"default",value:budget.default_max_estimated_tokens_by_format[resolvedOutputFormat]});const resolvedByDimension={include,amount,cost,encoding};return{command:normalizedCommand,include,amount,cost,encoding,canonical_options_used:canonicalReadOutputOptionsUsed(resolvedByDimension,invocationProvenance),legacy_aliases_used:legacyAliasesUsed,migration_hints:migrationHints,precedence:READ_OUTPUT_PRECEDENCE}}function isRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}const ENVELOPE_KEYS=new Set(["applied_bound","applied_limit","completeness","continuation_kind","continuation_path","continuation_contract","count","filters","has_more","next_cursor","now","omission_receipt","projection","budget_retention_policy","row_contract","sorting","total","truncated"]);const GET_STABLE_DERIVED_ITEM_SELECTORS=["collection_counts","notes_count","tests_count"];function projectRecordFields(value,selectors){const selected=new Set(selectors.map(selector=>selector.split(".")[0]));return Object.fromEntries(Object.entries(value).filter(([key])=>selected.has(key)))}function getProjectionVocabulary(result){const item=isRecord(result.item)?result.item:{};const itemFields=[...new Set([...Object.keys(item),...GET_STABLE_DERIVED_ITEM_SELECTORS.filter(key=>Object.hasOwn(item,key))])].sort((left,right)=>left.localeCompare(right));const sections=Object.keys(result).filter(key=>key!=="item"&&key!=="read_output"&&!ENVELOPE_KEYS.has(key)).sort((left,right)=>left.localeCompare(right));return{item,itemFields,sections,valid:[...itemFields,"item",...itemFields.map(field=>`item.${field}`),...sections]}}function applyGetIncludeProjection(result,selectors){const vocabulary=getProjectionVocabulary(result);const unknown=selectors.filter(selector=>!vocabulary.valid.includes(selector));if(unknown.length>0){throw new PmCliError(`Unknown --output-include selector(s) for get: ${unknown.join(", ")}. Valid selectors: ${vocabulary.valid.join(", ")}.`,EXIT_CODE.USAGE)}const fullItem=selectors.includes("item");const itemSelectors=selectors.flatMap(selector=>selector.startsWith("item.")?[selector.slice("item.".length)]:vocabulary.itemFields.includes(selector)?[selector]:[]).filter((selector,index,values)=>values.indexOf(selector)===index);if(fullItem&&itemSelectors.length>0){throw new PmCliError("--output-include cannot mix a full item with projected item fields; use item or item.<field>, not both.",EXIT_CODE.USAGE)}const selectedSections=new Set(selectors.filter(selector=>vocabulary.sections.includes(selector)));const projected=Object.fromEntries(Object.entries(result).filter(([key])=>ENVELOPE_KEYS.has(key)||selectedSections.has(key)));if(fullItem){projected.item=vocabulary.item}else if(itemSelectors.length>0){projected.item=projectRecordFields(vocabulary.item,itemSelectors)}const omittedFieldGroups=[...fullItem?[]:itemSelectors.length>0?vocabulary.itemFields.filter(field=>!itemSelectors.includes(field)).map(field=>({name:`item.${field}`,restore_with:`--output-include item.${field}`})):[{name:"item",restore_with:"--output-include item"}],...vocabulary.sections.filter(section=>!selectedSections.has(section)).map(section=>({name:section,restore_with:`--output-include ${section}`}))];const inheritedOmittedFieldGroups=isRecord(projected.omission_receipt)&&Array.isArray(projected.omission_receipt.omitted_field_groups)?projected.omission_receipt.omitted_field_groups:[];const combinedOmittedFieldGroups=[...inheritedOmittedFieldGroups,...omittedFieldGroups];projected.omission_receipt={has_omissions:combinedOmittedFieldGroups.length>0,omitted_field_group_count:combinedOmittedFieldGroups.length,omitted_field_groups:combinedOmittedFieldGroups};return projected}function countPopulatedRows(result){let populated=0;mapReadOutputRows({...result},entry=>{if(isRecord(entry)&&Object.keys(entry).length>0)populated+=1;return entry});return populated}function rejectEmptyIncludeProjection(command,original,shaped,selectors){if(countPopulatedRows(original)===0||countPopulatedRows(shaped)>0){return}const modes=[...readOutputIncludeModeOptions(command).keys()];const domain=modes.length>0?` Declared ${command} projection modes: ${modes.join(", ")}.`:` The ${command} surface declares no projection modes; name row fields instead.`;throw new PmCliError(`Unknown --output-include selector(s) for ${command}: ${selectors.join(", ")}. No selector matched any returned row field.${domain}`,EXIT_CODE.USAGE)}function applyIncludeProjection(command,result,selectors){if(command==="get"){return applyGetIncludeProjection(result,selectors)}const rows=readOutputRowPaths(result);const qualifiedRowSelectors=selectors.flatMap(selector=>rows.flatMap(rowPath=>selector.startsWith(`${rowPath}.`)?[selector.slice(rowPath.length+1)]:[]));const selectedRoot=selectors.some(selector=>Object.hasOwn(result,selector.split(".")[0])&&!rows.some(rowPath=>selector.startsWith(`${rowPath}.`)));if(rows.length>0&&(!selectedRoot||qualifiedRowSelectors.length>0)){const projected={...result};const rowSelectors=qualifiedRowSelectors.length>0?qualifiedRowSelectors:selectors;const shaped=mapReadOutputRows(projected,entry=>isRecord(entry)?projectRecordFields(entry,rowSelectors):entry);rejectEmptyIncludeProjection(command,result,shaped,rowSelectors);return shaped}return Object.fromEntries(Object.entries(result).filter(([key])=>selectors.some(selector=>selector.split(".")[0]===key)||ENVELOPE_KEYS.has(key)))}function applyAmountBound(result,amount){if(amount==="unbounded")return result;const{result:bounded,truncated}=boundReadOutputRows(result,amount);if(!truncated)return bounded;bounded.has_more=true;bounded.truncated=true;if(typeof bounded.count==="number"){const activeRowKey=isRecord(bounded.projection)?bounded.projection.row_key:void 0;bounded.count=typeof activeRowKey==="string"&&Array.isArray(bounded[activeRowKey])?bounded[activeRowKey].length:countReadOutputRows(bounded)}bounded.applied_bound={kind:"output_limit",source:"explicit",value:amount};return bounded}function requestedDimensions(resolved){return PM_READ_OUTPUT_DIMENSIONS.filter(dimension=>resolved[dimension]!==void 0&&resolved[dimension]?.source!=="default"||resolved.canonical_options_used.includes(CANONICAL_OPTIONS[dimension]))}function readOutputMeasurementFormat(options){const format=options.resolvedOutputFormat??options.outputFormat??options.output_format??options.format;return format==="json"||format==="toon"?format:void 0}function attachReadOutputSessionContracts(result,state,receipt,format){let withSession=attachReadOutputSessionReceipt(result,state,format);preserveReadOutputRowContract(result,withSession);for(let iteration=0;iteration<8;iteration+=1){const previousReadEstimate=receipt.estimated_tokens;const previousSessionEstimate=withSession.read_session.spent_this_call_tokens;updateReadOutputReceiptEstimate(withSession,receipt,format);const previous=withSession;withSession=attachReadOutputSessionReceipt(withSession,state,format);preserveReadOutputRowContract(previous,withSession);const sessionEstimate=withSession.read_session.spent_this_call_tokens;if(receipt.estimated_tokens===previousReadEstimate&&sessionEstimate===previousSessionEstimate){return withSession}}return withSession}function stabilizeReadOutputReceiptEstimates(result,options){if(!isRecord(result.read_output))return result;const format=readOutputMeasurementFormat(options);const receipt=result.read_output;const session=parseReadOutputSession(options.outputSession??options.output_session);if(session===void 0){updateReadOutputReceiptEstimate(result,receipt,format);return result}return attachReadOutputSessionContracts(result,session,receipt,format)}function attachValidateDiagnosticRowContract(command,result){if(command!=="validate")return result;const projection=isRecord(result.projection)?result.projection:void 0;const declaredFieldGroups=Array.isArray(projection?.declared_field_groups)?projection.declared_field_groups:[];if(!declaredFieldGroups.some(group=>isRecord(group)&&group.name==="diagnostic_rows")){return result}const diagnosticCollectionPaths=[...new Set(readOutputBudgetCollections(result).map(({path})=>path).filter(path=>/^checks\.\d+\.details\./u.test(path)))];const diagnosticRowKeys=diagnosticCollectionPaths.filter(path=>!diagnosticCollectionPaths.some(candidate=>candidate!==path&&path.startsWith(`${candidate}.`)));if(diagnosticRowKeys.length===0)return result;const existingContract=isRecord(result.row_contract)?result.row_contract:{};const existingRowKeys=Array.isArray(existingContract.row_keys)?existingContract.row_keys.filter(entry=>typeof entry==="string"):[];const existingContinuationRowKeys=Array.isArray(existingContract.continuation_row_keys)?existingContract.continuation_row_keys.filter(entry=>typeof entry==="string"):[];const rowKeys=existingRowKeys.length>0?existingRowKeys:diagnosticRowKeys;const continuationRowKeys=[...new Set(diagnosticRowKeys)];return JSON.stringify(rowKeys)===JSON.stringify(existingRowKeys)&&JSON.stringify(continuationRowKeys)===JSON.stringify(existingContinuationRowKeys)?result:{...result,row_contract:{...existingContract,row_keys:rowKeys,continuation_row_keys:continuationRowKeys,jq_selector:typeof existingContract.jq_selector==="string"?existingContract.jq_selector:".checks[].details"}}}function projectReadOutputRows(result,resolved,session,cursor){let projected={...result};if(resolved.include?.source==="canonical"){projected=applyIncludeProjection(resolved.command,projected,resolved.include.value)}if(resolved.command==="assurance"){projected=prioritizeAssuranceAssertions(projected)}projected=applyReadOutputContinuation(projected,resolved.command,cursor);if(resolved.command==="history"&&cursor){const historyRowKeys=["compact_history","provenance_history","history","diff"];projected=Object.fromEntries(Object.entries(projected).filter(([key])=>!historyRowKeys.includes(key)||key===cursor.path));if(isRecord(projected.projection)){projected.projection={...projected.projection,row_key:cursor.path}}if(isRecord(projected.row_contract)){const rowContract=projected.row_contract;projected.row_contract={...rowContract,row_keys:[cursor.path],...Array.isArray(rowContract.continuation_row_keys)?{continuation_row_keys:[cursor.path]}:{}}}projected.count=Object.keys(projected[cursor.path]).length}if(resolved.amount?.source==="canonical"){projected=applyAmountBound(projected,resolved.amount.value)}return session===void 0?projected:applyReadOutputSessionReferences(projected,session)}function resolveBindingReadOutputBudget(resolved,session){const budgets=[...resolved.cost!==void 0&&resolved.cost.value!=="unbounded"&&(resolved.cost.source==="canonical"||resolved.cost.source==="default")?[{source:resolved.cost.source,tokens:resolved.cost.value}]:[],...session===void 0?[]:[{source:"session",tokens:readOutputSessionRemainingTokens(session)}]];return budgets.sort((left,right)=>left.tokens-right.tokens)[0]}function canonicalReadOutputReceiptFields(resolved){const canonicalOptions=resolved.canonical_options_used;return canonicalOptions&&canonicalOptions.length>0?{canonical_options_used:canonicalOptions}:{}}function omitReadOutputForBudget(resolved,requested,session,bindingBudget,omittedResultEstimatedTokens,format){const minimalReceipt={contract_version:1,command:resolved.command,requested_dimensions:requested,...bindingBudget.source==="default"?{budget_source:bindingBudget.source,budget_tokens:bindingBudget.tokens}:{},precedence:resolved.precedence,...canonicalReadOutputReceiptFields(resolved),legacy_aliases_used:[],migration_hints:[],estimated_tokens:0,within_budget:false,strings_compacted:false,rows_compacted:false,result_omitted:true,...session===void 0?{omitted_result_estimated_tokens:omittedResultEstimatedTokens}:{}};const omitted={output_budget_exceeded:{omitted_result:true,reason:"requested_budget_infeasible",restore_with:"Unbounded",recovery:{outputBudget:"unbounded"}},read_output:minimalReceipt};const boundedOmission=session===void 0?omitted:attachReadOutputSessionContracts(omitted,session,minimalReceipt,format);if(session===void 0){updateReadOutputReceiptEstimate(boundedOmission,minimalReceipt,format)}if(session!==void 0&&minimalReceipt.estimated_tokens>bindingBudget.tokens){throw new PmCliError("The remaining output-session budget cannot fit its mandatory receipts; start a new session with a larger token_budget.",EXIT_CODE.USAGE)}return boundedOmission}function requiresReadOutputAudit(resolved,options){return options.outputRowContract===true||options.output_row_contract===true||resolved.canonical_options_used.includes("--output-include")||resolved.command==="list"&&resolved.canonical_options_used.length>0&&resolved.include?.value.includes("full")===true}function canReturnReadOutputUnchanged(resolved,session,result,format,options){if(session!==void 0||requiresReadOutputAudit(resolved,options))return false;if(resolved.amount?.source==="canonical"&&resolved.amount.value!=="unbounded"){const limit=resolved.amount.value;if(readOutputRowCollections(result).some(({value})=>(Array.isArray(value)?value.length:Object.keys(value).length)>limit))return false}return resolved.cost===void 0||resolved.cost.value==="unbounded"||resolved.cost.source==="legacy"||estimateReadOutputTokens(options.outputRowContract===false?Object.fromEntries(Object.entries(result).filter(([key])=>key!=="row_contract")):result,format)<=resolved.cost.value}function attachReadOutputTruncationDisclosure(projected,resolved,receipt,bindingBudget,continuationCursorRebased,measuredResultTokens,collectionsBeforeBudget){if(!receipt.rows_compacted)return;const overridden=resolved.amount?.value==="unbounded"?["amount"]:[];const afterByPath=new Map(readOutputContinuationRowCollections(projected).map(collection=>[collection.path,Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length]));const continuations=[...collectionsBeforeBudget.entries()].flatMap(([path,before])=>{const retainedRows=afterByPath.get(path);if(retainedRows>=before.rows)return[];const offset=before.baseOffset+retainedRows;return[{path,cursor:encodeReadOutputContinuationCursor({command:resolved.command,path,offset,total_rows:before.totalRows,fingerprint:before.fingerprint}),retained_rows:retainedRows,remaining_rows:before.totalRows-offset,total_rows:before.totalRows}]});const primary=continuations[0];const continuationHint=primary?"; page --output-cursor":"";const budgetHint=bindingBudget.source==="session"?`Truncated by the remaining ${bindingBudget.tokens}-token session budget; start a new output session with a larger token_budget${continuationHint}.`:`${bindingBudget.tokens}-token: raise --output-budget${continuationHint}`;receipt.migration_hints=[budgetHint,...resolved.migration_hints];const recoveryBudget=resolveReadOutputRecoveryBudget({effective_budget_tokens:bindingBudget.tokens,measured_result_tokens:measuredResultTokens});if(primary&&!continuationCursorRebased&&(typeof projected.next_cursor!=="string"||projected.continuation_kind==="output_cursor")){projected.next_cursor=primary.cursor}projected.continuation_kind=continuationCursorRebased?"producer_cursor":primary?"output_cursor":"none";projected.output_budget_truncation={reason:"output_budget_reached",budget_source:bindingBudget.source,budget_tokens:bindingBudget.tokens,overridden_dimensions:overridden,compacted_row_paths:receipt.compacted_row_paths,continuation_cursor_rebased:continuationCursorRebased,continuation_available:continuations.length>0,recovery_budget_multiplier:primary?1:recoveryBudget.recovery_budget_multiplier,continuations,restore_with:primary?"recovery":`Retry with --output-budget ${recoveryBudget.output_budget} because no declared row collection can be continued.`,recovery:primary?{cursor:primary.cursor,cli:"--output-cursor",sdk:"outputCursor",mcp:"outputCursor"}:{cli:`--output-budget ${recoveryBudget.output_budget}`,sdk:{outputBudget:recoveryBudget.output_budget},mcp:{outputBudget:recoveryBudget.output_budget}}}}function rebaseBudgetCompactedCursor(projected,originalItemCount,cursorSource,cursorContinuesExistingPage){if(typeof cursorSource!=="string"||!Array.isArray(projected.items)){return false}const retainedCount=projected.items.length;if(retainedCount===0||retainedCount>=originalItemCount){return false}let cursor;try{cursor=decodeQueryCursorEnvelope(cursorSource)}catch{return false}const sourceIndex=cursor.after_index;if(sourceIndex===void 0)return false;const last=projected.items.at(-1);if(Object.prototype.toString.call(last)!=="[object Object]"){return false}const lastId=Reflect.get(last,"id");if(typeof lastId!=="string"||lastId.length===0)return false;const afterIndex=cursorContinuesExistingPage?sourceIndex-(originalItemCount-retainedCount):sourceIndex+retainedCount;if(afterIndex<0)return false;projected.next_cursor=encodeQueryCursor(cursor.fingerprint,lastId,afterIndex,cursor.snapshot);return true}function captureReadOutputContinuationState(projected,command,cursor,options){const collectionsBeforeBudget=new Map(readOutputContinuationRowCollections(projected).map(collection=>{const rows=Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length;const continued=cursor?.path===collection.path;return[collection.path,{rows,totalRows:continued?cursor.total_rows:rows,baseOffset:continued?cursor.offset:0,fingerprint:continued?cursor.fingerprint:readOutputCollectionFingerprint(collection.path,collection.value,command)}]}));const cursorContinuesExistingPage=typeof projected.next_cursor==="string";return{collectionsBeforeBudget,originalItemCount:Array.isArray(projected.items)?projected.items.length:0,cursorContinuesExistingPage,cursorSource:cursorContinuesExistingPage?projected.next_cursor:options.after}}function compactReadOutputProjection(projected,resolved,receipt,bindingBudget,session,continuationState,measuredResultTokens,format){const assuranceMinimumRows=resolved.command==="assurance"&&Array.isArray(projected.assertions)?projected.assertions.filter(row=>isRecord(row)&&row.verdict!=="pass").length:0;const minimumRowsByPath=new Map;if(assuranceMinimumRows>0){minimumRowsByPath.set("assertions",assuranceMinimumRows)}if(resolved.command==="history"&&Array.isArray(projected.diff)){for(const collection of readOutputBudgetCollections(projected)){if(!collection.path.startsWith("diff."))continue;minimumRowsByPath.set(collection.path,Object.keys(collection.value).length)}}return compactReadOutputToBudget(projected,receipt,bindingBudget.tokens,minimumRowsByPath,format,compacted=>{const continuationCursorRebased=rebaseBudgetCompactedCursor(compacted,continuationState.originalItemCount,continuationState.cursorSource,continuationState.cursorContinuesExistingPage);attachReadOutputTruncationDisclosure(compacted,resolved,receipt,bindingBudget,continuationCursorRebased,measuredResultTokens,continuationState.collectionsBeforeBudget);if(resolved.command==="history"&&isRecord(compacted.projection)){compacted.has_more=typeof compacted.next_cursor==="string"||compacted.applied_bound?.kind==="output_limit";const rowKey=compacted.projection.row_key;if(typeof rowKey==="string"&&Array.isArray(compacted[rowKey])){compacted.count=compacted[rowKey].length}}if(session!==void 0){Object.assign(compacted,attachReadOutputSessionContracts(compacted,session,receipt,format))}},resolved.command==="history"&&Array.isArray(projected.diff))}function applyReadOutputDimensions(command,options,result){const resolved=resolveReadOutputDimensions(command,options);if(!resolved)return result;const format=readOutputMeasurementFormat(options);const session=parseReadOutputSession(options.outputSession??options.output_session);const rawCursor=options.outputCursor??options.output_cursor;const cursor=typeof rawCursor==="string"?decodeReadOutputContinuationCursor(rawCursor):void 0;const requested=requestedDimensions(resolved);const continuationReadyResult=attachValidateDiagnosticRowContract(resolved.command,result);if(cursor===void 0&&canReturnReadOutputUnchanged(resolved,session,continuationReadyResult,format,options)){return continuationReadyResult}const bindingBudget=resolveBindingReadOutputBudget(resolved,session);let projected=projectReadOutputRows(continuationReadyResult,resolved,session,cursor);preserveReadOutputRowContract(projected,projected,options.outputRowContract===false);const receipt={contract_version:1,command:resolved.command,requested_dimensions:requested,...bindingBudget?.source==="default"?{budget_source:bindingBudget.source,budget_tokens:bindingBudget.tokens}:{},precedence:resolved.precedence,...canonicalReadOutputReceiptFields(resolved),legacy_aliases_used:resolved.legacy_aliases_used,migration_hints:resolved.migration_hints,estimated_tokens:0,within_budget:true,strings_compacted:false,rows_compacted:false,result_omitted:false};projected.read_output=receipt;projected=session===void 0?projected:attachReadOutputSessionContracts(projected,session,receipt,format);updateReadOutputReceiptEstimate(projected,receipt,format);if(bindingBudget!==void 0&&receipt.estimated_tokens>bindingBudget.tokens){const brief=projectReadOutputItemToBrief(resolved.command,options,projected);if(brief!==void 0){receipt.applied_depth="brief";receipt.degradation_reason="output_budget_reached";preserveReadOutputRowContract(projected,brief);projected=stabilizeReadOutputReceiptEstimates(brief,options)}if(receipt.estimated_tokens>bindingBudget.tokens){projected=compactReadOutputProjection(projected,resolved,receipt,bindingBudget,session,captureReadOutputContinuationState(projected,resolved.command,cursor,options),receipt.estimated_tokens,format)}}if(bindingBudget!==void 0&&receipt.estimated_tokens>bindingBudget.tokens){return omitReadOutputForBudget(resolved,requested,session,bindingBudget,receipt.estimated_tokens,format)}return projected}function isReadOutputBudgetExceeded(result){return isRecord(result)&&isRecord(result.output_budget_exceeded)&&result.output_budget_exceeded.omitted_result===true&&result.output_budget_exceeded.reason==="requested_budget_infeasible"}function resolveReadOutputEncoding(command,options){const canonical=options.outputFormat??options.output_format;if(canonical==="json"||canonical==="toon")return canonical;const encoding=resolveReadOutputDimensions(command,options)?.encoding;return encoding?.value==="json"||encoding?.value==="toon"?encoding.value:void 0}export{PM_READ_OUTPUT_COMPOSITION_OPTION_FLAGS,PM_READ_OUTPUT_CONTINUATION_FINGERPRINT_POLICIES,PM_READ_OUTPUT_DIMENSIONS,PM_READ_OUTPUT_OPTION_FLAGS,PM_READ_OUTPUT_SURFACES,PM_READ_OUTPUT_SURFACE_CONTRACTS,applyReadOutputDimensions,applyReadOutputIncludeModes,decodeReadOutputContinuationCursor2 as decodeReadOutputContinuationCursor,encodeReadOutputContinuationCursor2 as encodeReadOutputContinuationCursor,isReadOutputBudgetExceeded,normalizeReadOutputIncludeModeOptions,readOutputCollectionFingerprint2 as readOutputCollectionFingerprint,readOutputIncludeModeOptions,resolveReadOutputDimensions,resolveReadOutputEncoding,resolveReadOutputRecoveryBudget2 as resolveReadOutputRecoveryBudget,resolveReadOutputSurface,stabilizeReadOutputReceiptEstimates,validateReadOutputOptions};
1
+ !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d1ed05d5-c83a-555c-95f5-5b2f62b9bc64")}catch(e2){}})();import{READ_OUTPUT_DIMENSION_FLAGS,READ_OUTPUT_COMPOSITION_FLAGS}from"./read-output/options.js";import{resolvePmHistoryOperation}from"./cli-contracts/command-aliases.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{compactReadOutputToBudget,estimateReadOutputTokens,projectReadOutputItemToBrief,preserveReadOutputRowContract,resolveReadOutputRecoveryBudget,updateReadOutputReceiptEstimate}from"./read-output-budget.js";import{resolveReadOutputRecoveryBudget as resolveReadOutputRecoveryBudget2}from"./read-output-budget.js";import{resolvePmCommandOutputBudget}from"./cli-contracts/agent-output-contracts.js";import{boundReadOutputRows,countReadOutputRows,mapReadOutputRows,readOutputBudgetCollections,readOutputContinuationRowCollections,readOutputRowPaths,readOutputRowCollections,refreshReadOutputDeliveredCounts}from"./read-output-rows.js";import{applyReadOutputContinuation,decodeReadOutputContinuationCursor,encodeReadOutputContinuationCursor,prioritizeAssuranceAssertions,readOutputCollectionFingerprint}from"./read-output/continuation.js";import{decodeReadOutputContinuationCursor as decodeReadOutputContinuationCursor2,encodeReadOutputContinuationCursor as encodeReadOutputContinuationCursor2,PM_READ_OUTPUT_CONTINUATION_FINGERPRINT_POLICIES,readOutputCollectionFingerprint as readOutputCollectionFingerprint2}from"./read-output/continuation.js";import{applyReadOutputSessionReferences,attachReadOutputSessionReceipt,parseReadOutputSession,readOutputSessionRemainingTokens}from"./read-output-session.js";import{decodeQueryCursorEnvelope,encodeQueryCursor}from"./pagination.js";import{READ_OUTPUT_INVOCATION_PROVENANCE}from"./read-output/provenance.js";const PM_READ_OUTPUT_DIMENSIONS=["include","amount","cost","encoding"];const PM_READ_OUTPUT_SURFACES=["list","context","search","get","next","health","deps","graph","history","activity","validate","events","contracts","comments","notes","files","docs","stats","aggregate","duplicates","package-catalog","package-manage","comments-audit","assurance"];const READ_OUTPUT_PRECEDENCE=["canonical","legacy","intent","default"];const CANONICAL_OPTIONS=READ_OUTPUT_DIMENSION_FLAGS;const PM_READ_OUTPUT_OPTION_FLAGS=Object.freeze(PM_READ_OUTPUT_DIMENSIONS.map(dimension=>CANONICAL_OPTIONS[dimension]));const PM_READ_OUTPUT_COMPOSITION_OPTION_FLAGS=READ_OUTPUT_COMPOSITION_FLAGS;const LEGACY_FLAGS_BY_COMMAND={list:{include:["--brief","--compact","--fields","--full"],amount:["--after","--limit","--no-truncate"],cost:["--token-budget"],encoding:["--format","--stream"]},context:{include:["--fields","--section"],amount:["--after","--depth","--limit"],cost:["--token-budget"],encoding:["--format"]},search:{include:["--compact","--fields","--full"],amount:["--after","--limit"],cost:["--token-budget"],encoding:["--format"]},get:{include:["--fields","--full"],amount:["--depth"],cost:["--token-budget"],encoding:["--format"]},next:{amount:["--blocked-limit","--limit"],cost:["--token-budget"],encoding:["--format"]},health:{include:["--brief","--check-only","--full","--summary"]},deps:{include:["--collapse","--full","--summary"],amount:["--edge-limit","--max-depth","--node-limit"],cost:["--token-budget"],encoding:["--format"]},graph:{include:["--full","--summary"],amount:["--after","--limit","--max-depth","--max-paths"]},history:{include:["--compact","--full"],amount:["--limit"],encoding:["--format"]},activity:{include:["--compact","--full"],amount:["--limit","--unbounded"],encoding:["--stream"]},validate:{include:["--counts","--full"]},events:{include:["--full"],amount:["--limit"],encoding:["--follow"]},contracts:{include:["--full","--summary"]},comments:{amount:["--limit"]},notes:{amount:["--limit"]},files:{amount:["--limit","--no-truncate","--offset"]},docs:{},stats:{},aggregate:{},duplicates:{amount:["--limit"]},"package-catalog":{},"package-manage":{},"comments-audit":{},assurance:{}};const VALUE_BEARING_INCLUDE_ALIASES=new Set(["--collapse","--fields","--section"]);const BEHAVIOR_PRESERVING_MIGRATION_HINTS=Object.freeze({"--after":"--after retains cursor-position semantics; use --output-limit <n> separately to bound returned rows.","--check-only":"--check-only retains health side-effect semantics; --output-include does not suppress vector refresh.","--collapse":"--collapse retains dependency grouping semantics; --output-include does not replace it.","--depth":"--depth retains traversal or detail-depth semantics; --output-limit does not replace it.","--follow":"--follow retains event-tail semantics; --output-format does not enable following.","--max-depth":"--max-depth retains graph traversal-depth semantics; --output-limit does not replace it.","--max-paths":"--max-paths retains graph path-search semantics; use --output-limit separately to bound returned rows.","--no-truncate":"--no-truncate is a compatibility alias; prefer --output-limit unbounded.","--offset":"--offset retains positional pagination semantics; use --output-limit separately to bound returned rows.","--stream":"--stream retains command streaming semantics; --output-format selects only static result encoding.","--unbounded":"--unbounded is a compatibility alias; prefer --output-limit unbounded."});function flagSelector(flag){return flag.slice(2).replaceAll("-","_")}function migrationHint(flag,dimension){const behaviorHint=BEHAVIOR_PRESERVING_MIGRATION_HINTS[flag];if(behaviorHint!==void 0)return behaviorHint;const suffix=dimension==="include"?VALUE_BEARING_INCLUDE_ALIASES.has(flag)?"<csv>":flagSelector(flag):dimension==="amount"?"<n>":dimension==="cost"?"<tokens>":"<toon|json>";return`${flag} is a compatibility alias; prefer ${CANONICAL_OPTIONS[dimension]} ${suffix}.`}function buildSurfaceContract(command){const legacy=LEGACY_FLAGS_BY_COMMAND[command];const dimensions=Object.freeze(Object.fromEntries(PM_READ_OUTPUT_DIMENSIONS.map(dimension=>[dimension,Object.freeze({dimension,canonical_option:CANONICAL_OPTIONS[dimension],applicable:true,inapplicable_reason:null,legacy_aliases:Object.freeze((legacy[dimension]??[]).map(flag=>Object.freeze({flag,semantics:BEHAVIOR_PRESERVING_MIGRATION_HINTS[flag]===void 0?"replacement":"behavior_preserving",migration_hint:migrationHint(flag,dimension),visibility:"hidden_alias"})))})])));return Object.freeze({command,dimensions,precedence:READ_OUTPUT_PRECEDENCE,budget_retention_policy:command==="assurance"?"verdict_priority":"ordered_prefix",projection_modes:Object.freeze([...readOutputIncludeModeOptions(command).keys()])})}const PM_READ_OUTPUT_SURFACE_CONTRACTS=Object.freeze(PM_READ_OUTPUT_SURFACES.map(buildSurfaceContract));const SURFACE_CONTRACT_BY_COMMAND=new Map(PM_READ_OUTPUT_SURFACE_CONTRACTS.map(contract=>[contract.command,contract]));function resolveReadOutputSurface(command,options={}){const normalizedCommand=resolvePmHistoryOperation(command.trim().toLowerCase());const packageMode=normalizedCommand==="package catalog"||normalizedCommand==="packages catalog"||normalizedCommand==="package-catalog"||(normalizedCommand==="package"||normalizedCommand==="packages"||normalizedCommand==="extension")&&(options.catalog===true||options.target==="catalog"||options.action==="catalog");const root=packageMode?"package-catalog":normalizedCommand==="package manage"||normalizedCommand==="package-manage"?"package-manage":normalizedCommand.split(" ")[0];const normalized=root.startsWith("list-")?"list":root==="ctx"?"context":root;return PM_READ_OUTPUT_SURFACES.includes(normalized)?normalized:void 0}const CANONICAL_OPTION_KEYS=["outputInclude","output_include","outputLimit","output_limit","outputBudget","output_budget","outputFormat","output_format","outputSession","output_session","outputCursor","output_cursor","outputRowContract","output_row_contract"];const HYBRID_READ_MUTATION_KEYS={comments:["add","body","stdin","file","edit","delete"],notes:["add","addJson","stdin","file","edit","delete"],files:["add","addGlob","remove","migrate","apply","note"],docs:["add","addGlob","remove","migrate","note"],"package-catalog":["activate","adopt","adoptAll","deactivate","doctor","init","install","manage","migrate","reload","scaffold","uninstall"]};function hasCanonicalReadOutputOptions(options){return CANONICAL_OPTION_KEYS.some(key=>key!=="outputFormat"&&key!=="output_format"&&options[key]!==void 0)}const READ_OUTPUT_VALUE_VALIDATORS=[{keys:["outputInclude","output_include"],valid:value=>stringList(value)!==void 0,message:"--output-include requires at least one comma-separated field or section."},{keys:["outputLimit","output_limit"],valid:value=>value==="unbounded"||positiveInteger(value)!==void 0,message:"--output-limit must be a positive integer or unbounded."},{keys:["outputBudget","output_budget"],valid:value=>value==="unbounded"||positiveInteger(value)!==void 0,message:"--output-budget must be a positive integer or unbounded."},{keys:["outputSession","output_session"],valid:value=>{parseReadOutputSession(value);return true},message:"--output-session must be a valid session-state object."},{keys:["outputCursor","output_cursor"],valid:value=>typeof value==="string"&&value.trim().length>0,message:"--output-cursor requires a non-empty continuation cursor."}];function validateReadOutputOptions(command,options){const encoding=options.outputFormat??options.output_format;if(encoding!==void 0&&encoding!=="json"&&encoding!=="toon"){throw new PmCliError("--output-format must be toon or json.",EXIT_CODE.USAGE)}if(!hasCanonicalReadOutputOptions(options))return;const normalizedCommand=resolveReadOutputSurface(command,options);if(!normalizedCommand){throw new PmCliError(`Universal output controls apply only to read commands; ${command||"this command"} is not a read surface.`,EXIT_CODE.USAGE)}if((HYBRID_READ_MUTATION_KEYS[normalizedCommand]??[]).some(key=>options[key]!==void 0&&options[key]!==false)){throw new PmCliError(`Universal output controls cannot be combined with a ${normalizedCommand} mutation.`,EXIT_CODE.USAGE)}for(const validator of READ_OUTPUT_VALUE_VALIDATORS){const value=validator.keys.map(key=>options[key]).find(entry=>entry!==void 0);if(value!==void 0&&!validator.valid(value)){throw new PmCliError(validator.message,EXIT_CODE.USAGE)}}}function readOutputIncludeModeOptions(command){const surface=resolveReadOutputSurface(command);if(!surface)return new Map;return new Map((LEGACY_FLAGS_BY_COMMAND[surface].include??[]).filter(flag=>!VALUE_BEARING_INCLUDE_ALIASES.has(flag)&&BEHAVIOR_PRESERVING_MIGRATION_HINTS[flag]===void 0).map(flag=>[flagSelector(flag),optionKey(flag)]))}function applyReadOutputIncludeModes(command,includeValue,commandOptions){const requested=stringList(includeValue)??[];const modeOptions=readOutputIncludeModeOptions(command);const selectors=[];const modes=[];const optionsWithProvenance=commandOptions;const existingProvenance=optionsWithProvenance[READ_OUTPUT_INVOCATION_PROVENANCE];const canonicalModes=new Set(existingProvenance?.canonical_include_modes??[]);const explicitLegacyAliases=new Set(existingProvenance?.explicit_legacy_aliases??[]);for(const token of requested){const option=modeOptions.get(token);if(option===void 0){selectors.push(token);continue}const legacyFlag=`--${token.replaceAll("_","-")}`;if(isRequestedOption(readOption(commandOptions,legacyFlag))){explicitLegacyAliases.add(legacyFlag)}commandOptions[option]=true;modes.push(token);canonicalModes.add(token)}const forwardedGetFieldSelectors=resolveReadOutputSurface(command)==="get"?selectors.filter(selector=>selector!=="item"):[];const forwardedGetFields=forwardedGetFieldSelectors.length>0;if(forwardedGetFields){commandOptions.fields=[...new Set([...stringList(commandOptions.fields)??[],...forwardedGetFieldSelectors])].join(",");canonicalModes.add("fields")}if(modes.length>0||forwardedGetFields){optionsWithProvenance[READ_OUTPUT_INVOCATION_PROVENANCE]={canonical_include_modes:[...canonicalModes],explicit_legacy_aliases:[...explicitLegacyAliases],...existingProvenance?.cli_invocation_observed===true?{cli_invocation_observed:true}:{}}}return{selectors,modes}}function normalizeReadOutputIncludeModeOptions(command,options){const include=options.outputInclude??options.output_include;if(include===void 0)return;const{selectors,modes}=applyReadOutputIncludeModes(command,include,options);if(modes.length===0)return;const residual=selectors.length>0?selectors.join(","):void 0;options.outputInclude=residual;if(Object.hasOwn(options,"output_include")){options.output_include=residual}}function optionKey(flag){return flag.slice(2).replace(/-([a-z])/gu,(_,character)=>character.toUpperCase())}function readOption(options,flag){const key=optionKey(flag);if(Object.hasOwn(options,key))return options[key];const snakeKey=flag.slice(2).replaceAll("-","_");if(Object.hasOwn(options,snakeKey))return options[snakeKey];if(flag==="--no-truncate"&&options.truncate===false)return true;return void 0}function isRequestedOption(value){return value!==void 0&&value!==false&&value!==null}function stringList(value){const values=Array.isArray(value)?value:[value];const normalized=values.flatMap(entry=>typeof entry==="string"?entry.split(","):[]).map(entry=>entry.trim()).filter(Boolean);return normalized.length>0?[...new Set(normalized)]:void 0}function positiveInteger(value){const parsed=typeof value==="number"?value:typeof value==="string"&&/^\d+$/u.test(value.trim())?Number(value):Number.NaN;return Number.isSafeInteger(parsed)&&parsed>0?parsed:void 0}function resolveLegacyDimension(contract,options,usable,ignore){for(const alias of contract.legacy_aliases){if(ignore(alias.flag))continue;const value=readOption(options,alias.flag);const candidate={value,flag:alias.flag};if(isRequestedOption(value)&&usable(candidate))return candidate}return void 0}function resolveIncludeValue(canonical,legacy){const canonicalList=stringList(canonical);if(canonicalList)return{source:"canonical",value:canonicalList};if(!legacy)return void 0;return{source:"legacy",value:stringList(legacy.value)??[flagSelector(legacy.flag)]}}function resolveAmountValue(canonical,legacy){if(canonical==="unbounded"){return{source:"canonical",value:"unbounded"}}const canonicalLimit=positiveInteger(canonical);if(canonicalLimit!==void 0){return{source:"canonical",value:canonicalLimit}}if(!legacy)return void 0;if(legacy.flag==="--no-truncate"||legacy.flag==="--unbounded"){return{source:"legacy",value:"unbounded"}}const legacyLimit=positiveInteger(legacy.value);return legacyLimit===void 0?void 0:{source:"legacy",value:legacyLimit}}function resolveCostValue(canonical,legacy){if(canonical==="unbounded"){return{source:"canonical",value:"unbounded"}}const canonicalBudget=positiveInteger(canonical);if(canonicalBudget!==void 0){return{source:"canonical",value:canonicalBudget}}if(!legacy)return void 0;const legacyBudget=positiveInteger(legacy.value);return legacyBudget===void 0?void 0:{source:"legacy",value:legacyBudget}}function resolveEncodingValue(canonical,legacy){if(canonical==="json"||canonical==="toon"){return{source:"canonical",value:canonical}}if(!legacy)return void 0;if(legacy.flag==="--stream"||legacy.flag==="--follow"){return{source:"legacy",value:"stream"}}return legacy.value==="json"||legacy.value==="toon"?{source:"legacy",value:legacy.value}:void 0}function shouldIgnoreReadOutputLegacyAlias(provenance,dimension,flag){if(!provenance)return false;const explicitLegacyAliases=new Set(provenance.explicit_legacy_aliases);if(provenance.cli_invocation_observed===true||provenance.sdk_invocation_observed===true){return!explicitLegacyAliases.has(flag)}const forwardedIncludeAliases=new Set(provenance.canonical_include_modes.map(mode=>`--${mode.replaceAll("_","-")}`));return dimension==="include"&&forwardedIncludeAliases.has(flag)&&!explicitLegacyAliases.has(flag)}function hasCompleteReadOutputIntent(command,legacyByDimension,provenance){const root=command.trim().toLowerCase().replaceAll(/\s+/gu," ").split(" ")[0];return root==="list-all"||legacyByDimension.amount?.flag==="--no-truncate"||legacyByDimension.include?.flag==="--full"||provenance?.canonical_include_modes.includes("full")===true}function canonicalReadOutputOptionsUsed(resolvedByDimension,provenance){return PM_READ_OUTPUT_DIMENSIONS.flatMap(dimension=>resolvedByDimension[dimension]?.source==="canonical"||dimension==="include"&&(provenance?.canonical_include_modes.length??0)>0?[CANONICAL_OPTIONS[dimension]]:[])}function resolveReadOutputDimensions(command,options){const normalizedCommand=resolveReadOutputSurface(command,options);if(!normalizedCommand)return void 0;const contract=SURFACE_CONTRACT_BY_COMMAND.get(normalizedCommand);const invocationProvenance=options[READ_OUTPUT_INVOCATION_PROVENANCE];const legacyResolvers={include:candidate=>resolveIncludeValue(void 0,candidate),amount:candidate=>resolveAmountValue(void 0,candidate),cost:candidate=>resolveCostValue(void 0,candidate),encoding:candidate=>resolveEncodingValue(void 0,candidate)};const legacyByDimension=Object.fromEntries(PM_READ_OUTPUT_DIMENSIONS.map(dimension=>[dimension,resolveLegacyDimension(contract.dimensions[dimension],options,candidate=>legacyResolvers[dimension](candidate)!==void 0,flag=>shouldIgnoreReadOutputLegacyAlias(invocationProvenance,dimension,flag))]));const legacyAliasesUsed=PM_READ_OUTPUT_DIMENSIONS.flatMap(dimension=>{const resolved=legacyByDimension[dimension];return resolved?[resolved.flag]:[]});const migrationHints=PM_READ_OUTPUT_DIMENSIONS.flatMap(dimension=>{const resolved=legacyByDimension[dimension];if(!resolved)return[];const alias=contract.dimensions[dimension].legacy_aliases.find(entry=>entry.flag===resolved.flag);return[alias.migration_hint]});const encoding=resolveEncodingValue(options.outputFormat??options.output_format,legacyByDimension.encoding);const include=resolveIncludeValue(options.outputInclude??options.output_include,legacyByDimension.include);const amount=resolveAmountValue(options.outputLimit??options.output_limit,legacyByDimension.amount);const explicitCost=resolveCostValue(options.outputBudget??options.output_budget,legacyByDimension.cost);const completeResultIntent=hasCompleteReadOutputIntent(command,legacyByDimension,invocationProvenance);const budget=resolvePmCommandOutputBudget(command,{generateFallback:true});const resolvedOutputFormat=encoding?.value==="json"||options.resolvedOutputFormat==="json"?"json":"toon";const cost=explicitCost??(completeResultIntent?{source:"intent",value:"unbounded"}:{source:"default",value:budget.default_max_estimated_tokens_by_format[resolvedOutputFormat]});const resolvedByDimension={include,amount,cost,encoding};return{command:normalizedCommand,include,amount,cost,encoding,canonical_options_used:canonicalReadOutputOptionsUsed(resolvedByDimension,invocationProvenance),legacy_aliases_used:legacyAliasesUsed,migration_hints:migrationHints,precedence:READ_OUTPUT_PRECEDENCE}}function isRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}const ENVELOPE_KEYS=new Set(["applied_bound","applied_limit","completeness","continuation_kind","continuation_path","continuation_contract","count","filters","has_more","next_cursor","now","omission_receipt","projection","budget_retention_policy","row_contract","sorting","total","truncated"]);const GET_STABLE_DERIVED_ITEM_SELECTORS=["collection_counts","notes_count","tests_count"];function projectRecordFields(value,selectors){const selected=new Set(selectors.map(selector=>selector.split(".")[0]));return Object.fromEntries(Object.entries(value).filter(([key])=>selected.has(key)))}function getProjectionVocabulary(result){const item=isRecord(result.item)?result.item:{};const itemFields=[...new Set([...Object.keys(item),...GET_STABLE_DERIVED_ITEM_SELECTORS.filter(key=>Object.hasOwn(item,key))])].sort((left,right)=>left.localeCompare(right));const sections=Object.keys(result).filter(key=>key!=="item"&&key!=="read_output"&&!ENVELOPE_KEYS.has(key)).sort((left,right)=>left.localeCompare(right));return{item,itemFields,sections,valid:[...itemFields,"item",...itemFields.map(field=>`item.${field}`),...sections]}}function applyGetIncludeProjection(result,selectors){const vocabulary=getProjectionVocabulary(result);const unknown=selectors.filter(selector=>!vocabulary.valid.includes(selector));if(unknown.length>0){throw new PmCliError(`Unknown --output-include selector(s) for get: ${unknown.join(", ")}. Valid selectors: ${vocabulary.valid.join(", ")}.`,EXIT_CODE.USAGE)}const fullItem=selectors.includes("item");const itemSelectors=selectors.flatMap(selector=>selector.startsWith("item.")?[selector.slice("item.".length)]:vocabulary.itemFields.includes(selector)?[selector]:[]).filter((selector,index,values)=>values.indexOf(selector)===index);if(fullItem&&itemSelectors.length>0){throw new PmCliError("--output-include cannot mix a full item with projected item fields; use item or item.<field>, not both.",EXIT_CODE.USAGE)}const selectedSections=new Set(selectors.filter(selector=>vocabulary.sections.includes(selector)));const projected=Object.fromEntries(Object.entries(result).filter(([key])=>ENVELOPE_KEYS.has(key)||selectedSections.has(key)));if(fullItem){projected.item=vocabulary.item}else if(itemSelectors.length>0){projected.item=projectRecordFields(vocabulary.item,itemSelectors)}const omittedFieldGroups=[...fullItem?[]:itemSelectors.length>0?vocabulary.itemFields.filter(field=>!itemSelectors.includes(field)).map(field=>({name:`item.${field}`,restore_with:`--output-include item.${field}`})):[{name:"item",restore_with:"--output-include item"}],...vocabulary.sections.filter(section=>!selectedSections.has(section)).map(section=>({name:section,restore_with:`--output-include ${section}`}))];const inheritedOmittedFieldGroups=isRecord(projected.omission_receipt)&&Array.isArray(projected.omission_receipt.omitted_field_groups)?projected.omission_receipt.omitted_field_groups:[];const combinedOmittedFieldGroups=[...inheritedOmittedFieldGroups,...omittedFieldGroups];projected.omission_receipt={has_omissions:combinedOmittedFieldGroups.length>0,omitted_field_group_count:combinedOmittedFieldGroups.length,omitted_field_groups:combinedOmittedFieldGroups};return projected}function countPopulatedRows(result){let populated=0;mapReadOutputRows({...result},entry=>{if(isRecord(entry)&&Object.keys(entry).length>0)populated+=1;return entry});return populated}function rejectEmptyIncludeProjection(command,original,shaped,selectors){if(countPopulatedRows(original)===0||countPopulatedRows(shaped)>0){return}const modes=[...readOutputIncludeModeOptions(command).keys()];const domain=modes.length>0?` Declared ${command} projection modes: ${modes.join(", ")}.`:` The ${command} surface declares no projection modes; name row fields instead.`;throw new PmCliError(`Unknown --output-include selector(s) for ${command}: ${selectors.join(", ")}. No selector matched any returned row field.${domain}`,EXIT_CODE.USAGE)}function applyIncludeProjection(command,result,selectors){if(command==="get"){return applyGetIncludeProjection(result,selectors)}const rows=readOutputRowPaths(result);const qualifiedRowSelectors=selectors.flatMap(selector=>rows.flatMap(rowPath=>selector.startsWith(`${rowPath}.`)?[selector.slice(rowPath.length+1)]:[]));const selectedRoot=selectors.some(selector=>Object.hasOwn(result,selector.split(".")[0])&&!rows.some(rowPath=>selector.startsWith(`${rowPath}.`)));if(rows.length>0&&(!selectedRoot||qualifiedRowSelectors.length>0)){const projected={...result};const rowSelectors=qualifiedRowSelectors.length>0?qualifiedRowSelectors:selectors;const shaped=mapReadOutputRows(projected,entry=>isRecord(entry)?projectRecordFields(entry,rowSelectors):entry);rejectEmptyIncludeProjection(command,result,shaped,rowSelectors);return shaped}return Object.fromEntries(Object.entries(result).filter(([key])=>selectors.some(selector=>selector.split(".")[0]===key)||ENVELOPE_KEYS.has(key)))}function applyAmountBound(result,amount){if(amount==="unbounded")return result;const{result:bounded,truncated}=boundReadOutputRows(result,amount);if(!truncated)return bounded;bounded.has_more=true;bounded.truncated=true;if(typeof bounded.count==="number"){const activeRowKey=isRecord(bounded.projection)?bounded.projection.row_key:void 0;bounded.count=typeof activeRowKey==="string"&&Array.isArray(bounded[activeRowKey])?bounded[activeRowKey].length:countReadOutputRows(bounded)}bounded.applied_bound={kind:"output_limit",source:"explicit",value:amount};return bounded}function requestedDimensions(resolved){return PM_READ_OUTPUT_DIMENSIONS.filter(dimension=>resolved[dimension]!==void 0&&resolved[dimension]?.source!=="default"||resolved.canonical_options_used.includes(CANONICAL_OPTIONS[dimension]))}function readOutputMeasurementFormat(options){const format=options.resolvedOutputFormat??options.outputFormat??options.output_format??options.format;return format==="json"||format==="toon"?format:void 0}function attachReadOutputSessionContracts(result,state,receipt,format){let withSession=attachReadOutputSessionReceipt(result,state,format);preserveReadOutputRowContract(result,withSession);for(let iteration=0;iteration<8;iteration+=1){const previousReadEstimate=receipt.estimated_tokens;const previousSessionEstimate=withSession.read_session.spent_this_call_tokens;updateReadOutputReceiptEstimate(withSession,receipt,format);const previous=withSession;withSession=attachReadOutputSessionReceipt(withSession,state,format);preserveReadOutputRowContract(previous,withSession);const sessionEstimate=withSession.read_session.spent_this_call_tokens;if(receipt.estimated_tokens===previousReadEstimate&&sessionEstimate===previousSessionEstimate){return withSession}}return withSession}function stabilizeReadOutputReceiptEstimates(result,options){if(!isRecord(result.read_output))return result;const format=readOutputMeasurementFormat(options);const receipt=result.read_output;const session=parseReadOutputSession(options.outputSession??options.output_session);if(session===void 0){updateReadOutputReceiptEstimate(result,receipt,format);return result}return attachReadOutputSessionContracts(result,session,receipt,format)}function attachValidateDiagnosticRowContract(command,result){if(command!=="validate")return result;const projection=isRecord(result.projection)?result.projection:void 0;const declaredFieldGroups=Array.isArray(projection?.declared_field_groups)?projection.declared_field_groups:[];if(!declaredFieldGroups.some(group=>isRecord(group)&&group.name==="diagnostic_rows")){return result}const diagnosticCollectionPaths=[...new Set(readOutputBudgetCollections(result).map(({path})=>path).filter(path=>/^checks\.\d+\.details\./u.test(path)))];const diagnosticRowKeys=diagnosticCollectionPaths.filter(path=>!diagnosticCollectionPaths.some(candidate=>candidate!==path&&path.startsWith(`${candidate}.`)));if(diagnosticRowKeys.length===0)return result;const existingContract=isRecord(result.row_contract)?result.row_contract:{};const existingRowKeys=Array.isArray(existingContract.row_keys)?existingContract.row_keys.filter(entry=>typeof entry==="string"):[];const existingContinuationRowKeys=Array.isArray(existingContract.continuation_row_keys)?existingContract.continuation_row_keys.filter(entry=>typeof entry==="string"):[];const rowKeys=existingRowKeys.length>0?existingRowKeys:diagnosticRowKeys;const continuationRowKeys=[...new Set(diagnosticRowKeys)];return JSON.stringify(rowKeys)===JSON.stringify(existingRowKeys)&&JSON.stringify(continuationRowKeys)===JSON.stringify(existingContinuationRowKeys)?result:{...result,row_contract:{...existingContract,row_keys:rowKeys,continuation_row_keys:continuationRowKeys,jq_selector:typeof existingContract.jq_selector==="string"?existingContract.jq_selector:".checks[].details"}}}function projectReadOutputRows(result,resolved,session,cursor){let projected={...result};if(resolved.include?.source==="canonical"){projected=applyIncludeProjection(resolved.command,projected,resolved.include.value)}if(resolved.command==="assurance"){projected=prioritizeAssuranceAssertions(projected)}refreshReadOutputDeliveredCounts(projected,result);projected=applyReadOutputContinuation(projected,resolved.command,cursor);if(resolved.command==="history"&&cursor){const historyRowKeys=["compact_history","provenance_history","history","diff"];projected=Object.fromEntries(Object.entries(projected).filter(([key])=>!historyRowKeys.includes(key)||key===cursor.path));if(isRecord(projected.projection)){projected.projection={...projected.projection,row_key:cursor.path}}if(isRecord(projected.row_contract)){const rowContract=projected.row_contract;projected.row_contract={...rowContract,row_keys:[cursor.path],...Array.isArray(rowContract.continuation_row_keys)?{continuation_row_keys:[cursor.path]}:{}}}projected.count=Object.keys(projected[cursor.path]).length}const continuationSource=result.count_only===true?{...projected,count_only:true,count:result.count}:projected;if(resolved.amount?.source==="canonical"){projected=applyAmountBound(projected,resolved.amount.value)}refreshReadOutputDeliveredCounts(projected,continuationSource);return session===void 0?projected:applyReadOutputSessionReferences(projected,session)}function resolveBindingReadOutputBudget(resolved,session){const budgets=[...resolved.cost!==void 0&&resolved.cost.value!=="unbounded"&&(resolved.cost.source==="canonical"||resolved.cost.source==="default")?[{source:resolved.cost.source,tokens:resolved.cost.value}]:[],...session===void 0?[]:[{source:"session",tokens:readOutputSessionRemainingTokens(session)}]];return budgets.sort((left,right)=>left.tokens-right.tokens)[0]}function canonicalReadOutputReceiptFields(resolved){const canonicalOptions=resolved.canonical_options_used;return canonicalOptions&&canonicalOptions.length>0?{canonical_options_used:canonicalOptions}:{}}function omitReadOutputForBudget(resolved,requested,session,bindingBudget,omittedResultEstimatedTokens,format){const minimalReceipt={contract_version:1,command:resolved.command,requested_dimensions:requested,...bindingBudget.source==="default"?{budget_source:bindingBudget.source,budget_tokens:bindingBudget.tokens}:{},precedence:resolved.precedence,...canonicalReadOutputReceiptFields(resolved),legacy_aliases_used:[],migration_hints:[],estimated_tokens:0,within_budget:false,strings_compacted:false,rows_compacted:false,result_omitted:true,...session===void 0?{omitted_result_estimated_tokens:omittedResultEstimatedTokens}:{}};const omitted={output_budget_exceeded:{omitted_result:true,reason:"requested_budget_infeasible",restore_with:"Unbounded",recovery:{outputBudget:"unbounded"}},read_output:minimalReceipt};const boundedOmission=session===void 0?omitted:attachReadOutputSessionContracts(omitted,session,minimalReceipt,format);if(session===void 0){updateReadOutputReceiptEstimate(boundedOmission,minimalReceipt,format)}if(session!==void 0&&minimalReceipt.estimated_tokens>bindingBudget.tokens){throw new PmCliError("The remaining output-session budget cannot fit its mandatory receipts; start a new session with a larger token_budget.",EXIT_CODE.USAGE)}return boundedOmission}function requiresReadOutputAudit(resolved,options){return options.outputRowContract===true||options.output_row_contract===true||resolved.canonical_options_used.includes("--output-include")||resolved.command==="list"&&resolved.canonical_options_used.length>0&&resolved.include?.value.includes("full")===true}function canReturnReadOutputUnchanged(resolved,session,result,format,options){if(session!==void 0||requiresReadOutputAudit(resolved,options))return false;if(resolved.amount?.source==="canonical"&&resolved.amount.value!=="unbounded"){const limit=resolved.amount.value;if(readOutputRowCollections(result).some(({value})=>(Array.isArray(value)?value.length:Object.keys(value).length)>limit))return false}return resolved.cost===void 0||resolved.cost.value==="unbounded"||resolved.cost.source==="legacy"||estimateReadOutputTokens(options.outputRowContract===false?Object.fromEntries(Object.entries(result).filter(([key])=>key!=="row_contract")):result,format)<=resolved.cost.value}function attachReadOutputTruncationDisclosure(projected,resolved,receipt,bindingBudget,continuationCursorRebased,measuredResultTokens,collectionsBeforeBudget){if(!receipt.rows_compacted)return;const overridden=resolved.amount?.value==="unbounded"?["amount"]:[];const afterByPath=new Map(readOutputContinuationRowCollections(projected).map(collection=>[collection.path,Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length]));const continuations=[...collectionsBeforeBudget.entries()].flatMap(([path,before])=>{const retainedRows=afterByPath.get(path);if(retainedRows>=before.rows)return[];const offset=before.baseOffset+retainedRows;return[{path,cursor:encodeReadOutputContinuationCursor({command:resolved.command,path,offset,total_rows:before.totalRows,fingerprint:before.fingerprint}),retained_rows:retainedRows,remaining_rows:before.totalRows-offset,total_rows:before.totalRows}]});const primary=continuations[0];const continuationHint=primary?"; page --output-cursor":"";const budgetHint=bindingBudget.source==="session"?`Truncated by the remaining ${bindingBudget.tokens}-token session budget; start a new output session with a larger token_budget${continuationHint}.`:`${bindingBudget.tokens}-token: raise --output-budget${continuationHint}`;receipt.migration_hints=[budgetHint,...resolved.migration_hints];const recoveryBudget=resolveReadOutputRecoveryBudget({effective_budget_tokens:bindingBudget.tokens,measured_result_tokens:measuredResultTokens});if(primary&&!continuationCursorRebased&&(typeof projected.next_cursor!=="string"||projected.continuation_kind==="output_cursor")){projected.next_cursor=primary.cursor}projected.continuation_kind=continuationCursorRebased?"producer_cursor":primary?"output_cursor":"none";projected.output_budget_truncation={reason:"output_budget_reached",budget_source:bindingBudget.source,budget_tokens:bindingBudget.tokens,overridden_dimensions:overridden,compacted_row_paths:receipt.compacted_row_paths,continuation_cursor_rebased:continuationCursorRebased,continuation_available:continuations.length>0,recovery_budget_multiplier:primary?1:recoveryBudget.recovery_budget_multiplier,continuations,restore_with:primary?"recovery":`Retry with --output-budget ${recoveryBudget.output_budget} because no declared row collection can be continued.`,recovery:primary?{cursor:primary.cursor,cli:"--output-cursor",sdk:"outputCursor",mcp:"outputCursor"}:{cli:`--output-budget ${recoveryBudget.output_budget}`,sdk:{outputBudget:recoveryBudget.output_budget},mcp:{outputBudget:recoveryBudget.output_budget}}}}function rebaseBudgetCompactedCursor(projected,originalItemCount,cursorSource,cursorContinuesExistingPage){if(typeof cursorSource!=="string"||!Array.isArray(projected.items)){return false}const retainedCount=projected.items.length;if(retainedCount===0||retainedCount>=originalItemCount){return false}let cursor;try{cursor=decodeQueryCursorEnvelope(cursorSource)}catch{return false}const sourceIndex=cursor.after_index;if(sourceIndex===void 0)return false;const last=projected.items.at(-1);if(Object.prototype.toString.call(last)!=="[object Object]"){return false}const lastId=Reflect.get(last,"id");if(typeof lastId!=="string"||lastId.length===0)return false;const afterIndex=cursorContinuesExistingPage?sourceIndex-(originalItemCount-retainedCount):sourceIndex+retainedCount;if(afterIndex<0)return false;projected.next_cursor=encodeQueryCursor(cursor.fingerprint,lastId,afterIndex,cursor.snapshot);return true}function captureReadOutputContinuationState(projected,command,cursor,options){const collectionsBeforeBudget=new Map(readOutputContinuationRowCollections(projected).map(collection=>{const rows=Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length;const continued=cursor?.path===collection.path;return[collection.path,{rows,totalRows:continued?cursor.total_rows:rows,baseOffset:continued?cursor.offset:0,fingerprint:continued?cursor.fingerprint:readOutputCollectionFingerprint(collection.path,collection.value,command)}]}));const cursorContinuesExistingPage=typeof projected.next_cursor==="string";return{collectionsBeforeBudget,originalItemCount:Array.isArray(projected.items)?projected.items.length:0,cursorContinuesExistingPage,cursorSource:cursorContinuesExistingPage?projected.next_cursor:options.after}}function compactReadOutputProjection(projected,source,countOnly,resolved,receipt,bindingBudget,session,continuationState,measuredResultTokens,format){const deliveredSource={...source,count_only:countOnly};const assuranceMinimumRows=resolved.command==="assurance"&&Array.isArray(projected.assertions)?projected.assertions.filter(row=>isRecord(row)&&row.verdict!=="pass").length:0;const minimumRowsByPath=new Map;if(assuranceMinimumRows>0){minimumRowsByPath.set("assertions",assuranceMinimumRows)}if(resolved.command==="history"&&Array.isArray(projected.diff)){for(const collection of readOutputBudgetCollections(projected)){if(!collection.path.startsWith("diff."))continue;minimumRowsByPath.set(collection.path,Object.keys(collection.value).length)}}return compactReadOutputToBudget(projected,receipt,bindingBudget.tokens,minimumRowsByPath,format,compacted=>{refreshReadOutputDeliveredCounts(compacted,deliveredSource);const continuationCursorRebased=rebaseBudgetCompactedCursor(compacted,continuationState.originalItemCount,continuationState.cursorSource,continuationState.cursorContinuesExistingPage);attachReadOutputTruncationDisclosure(compacted,resolved,receipt,bindingBudget,continuationCursorRebased,measuredResultTokens,continuationState.collectionsBeforeBudget);if(resolved.command==="history"&&isRecord(compacted.projection)){compacted.has_more=typeof compacted.next_cursor==="string"||compacted.applied_bound?.kind==="output_limit";const rowKey=compacted.projection.row_key;if(typeof rowKey==="string"&&Array.isArray(compacted[rowKey])){compacted.count=compacted[rowKey].length}}if(session!==void 0){Object.assign(compacted,attachReadOutputSessionContracts(compacted,session,receipt,format))}},resolved.command==="history"&&Array.isArray(projected.diff))}function applyReadOutputDimensions(command,options,result){const resolved=resolveReadOutputDimensions(command,options);if(!resolved)return result;const format=readOutputMeasurementFormat(options);const session=parseReadOutputSession(options.outputSession??options.output_session);const rawCursor=options.outputCursor??options.output_cursor;const cursor=typeof rawCursor==="string"?decodeReadOutputContinuationCursor(rawCursor):void 0;const requested=requestedDimensions(resolved);const continuationReadyResult=attachValidateDiagnosticRowContract(resolved.command,result);if(cursor===void 0&&canReturnReadOutputUnchanged(resolved,session,continuationReadyResult,format,options)){return continuationReadyResult}const bindingBudget=resolveBindingReadOutputBudget(resolved,session);let projected=projectReadOutputRows(continuationReadyResult,resolved,session,cursor);preserveReadOutputRowContract(projected,projected,options.outputRowContract===false);const receipt={contract_version:1,command:resolved.command,requested_dimensions:requested,...bindingBudget?.source==="default"?{budget_source:bindingBudget.source,budget_tokens:bindingBudget.tokens}:{},precedence:resolved.precedence,...canonicalReadOutputReceiptFields(resolved),legacy_aliases_used:resolved.legacy_aliases_used,migration_hints:resolved.migration_hints,estimated_tokens:0,within_budget:true,strings_compacted:false,rows_compacted:false,result_omitted:false};projected.read_output=receipt;projected=session===void 0?projected:attachReadOutputSessionContracts(projected,session,receipt,format);updateReadOutputReceiptEstimate(projected,receipt,format);if(bindingBudget!==void 0&&receipt.estimated_tokens>bindingBudget.tokens){const brief=projectReadOutputItemToBrief(resolved.command,options,projected);if(brief!==void 0){receipt.applied_depth="brief";receipt.degradation_reason="output_budget_reached";preserveReadOutputRowContract(projected,brief);projected=stabilizeReadOutputReceiptEstimates(brief,options)}if(receipt.estimated_tokens>bindingBudget.tokens){projected=compactReadOutputProjection(projected,projected,continuationReadyResult.count_only===true,resolved,receipt,bindingBudget,session,captureReadOutputContinuationState(projected,resolved.command,cursor,options),receipt.estimated_tokens,format)}}if(bindingBudget!==void 0&&receipt.estimated_tokens>bindingBudget.tokens){return omitReadOutputForBudget(resolved,requested,session,bindingBudget,receipt.estimated_tokens,format)}return projected}function isReadOutputBudgetExceeded(result){return isRecord(result)&&isRecord(result.output_budget_exceeded)&&result.output_budget_exceeded.omitted_result===true&&result.output_budget_exceeded.reason==="requested_budget_infeasible"}function resolveReadOutputEncoding(command,options){const canonical=options.outputFormat??options.output_format;if(canonical==="json"||canonical==="toon")return canonical;const encoding=resolveReadOutputDimensions(command,options)?.encoding;return encoding?.value==="json"||encoding?.value==="toon"?encoding.value:void 0}export{PM_READ_OUTPUT_COMPOSITION_OPTION_FLAGS,PM_READ_OUTPUT_CONTINUATION_FINGERPRINT_POLICIES,PM_READ_OUTPUT_DIMENSIONS,PM_READ_OUTPUT_OPTION_FLAGS,PM_READ_OUTPUT_SURFACES,PM_READ_OUTPUT_SURFACE_CONTRACTS,applyReadOutputDimensions,applyReadOutputIncludeModes,decodeReadOutputContinuationCursor2 as decodeReadOutputContinuationCursor,encodeReadOutputContinuationCursor2 as encodeReadOutputContinuationCursor,isReadOutputBudgetExceeded,normalizeReadOutputIncludeModeOptions,readOutputCollectionFingerprint2 as readOutputCollectionFingerprint,readOutputIncludeModeOptions,resolveReadOutputDimensions,resolveReadOutputEncoding,resolveReadOutputRecoveryBudget2 as resolveReadOutputRecoveryBudget,resolveReadOutputSurface,stabilizeReadOutputReceiptEstimates,validateReadOutputOptions};
2
2
  //# sourceMappingURL=read-output-contracts.js.map
@@ -44,3 +44,7 @@ export declare function boundReadOutputRows(result: Record<string, unknown>, amo
44
44
  result: Record<string, unknown>;
45
45
  truncated: boolean;
46
46
  };
47
+ /** Retain compact producer classifications across serialized projection boundaries. */
48
+ export declare function rememberReadOutputFocusRows(result: Record<string, unknown>, rows: readonly Record<string, unknown>[]): void;
49
+ /** Refresh delivered counters, preserving full-match totals and hidden classifications. */
50
+ export declare function refreshReadOutputDeliveredCounts(result: Record<string, unknown>, source?: Record<string, unknown>): void;
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="85bc6b10-700a-5d06-970f-d544833dd059")}catch(e2){}})();const BUDGET_METADATA_ROOT_KEYS=new Set(["applied_bound","completeness","budget_retention_policy","continuation_contract","continuation_kind","continuation_path","filters","omission_receipt","output_budget_truncation","projection","read_output","read_session","row_contract","sorting"]);function isRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function valueAtPath(result,rowPath){let value=result;for(const segment of rowPath.split(".")){if(Array.isArray(value)){if(!/^\d+$/u.test(segment))return void 0;value=value[Number(segment)]}else{if(!isRecord(value))return void 0;value=value[segment]}}return value}function replaceValueAtPath(result,rowPath,replacement){const segments=rowPath.split(".");const replace=(value,offset)=>{if(offset===segments.length)return replacement;const segment=segments[offset];if(Array.isArray(value)){const index=Number(segment);const cloned=[...value];cloned[index]=replace(value[index],offset+1);return cloned}const record=value;return{...record,[segment]:replace(record[segment],offset+1)}};return replace(result,0)}function sliceReadOutputRowCollection(result,rowPath,offset){const collection=readOutputContinuationRowCollections(result).find(entry=>entry.path===rowPath);if(!collection)return result;const replacement=Array.isArray(collection.value)?collection.value.slice(offset):Object.fromEntries(Object.entries(collection.value).slice(offset));return replaceValueAtPath(result,rowPath,replacement)}function readOutputRowPaths(result){const contract=result.row_contract;if(isRecord(contract)&&Array.isArray(contract.row_keys)){return contract.row_keys.filter(entry=>typeof entry==="string"&&entry.trim().length>0)}return Object.entries(result).filter(([,value])=>Array.isArray(value)).map(([key])=>key)}function readOutputContinuationRowPaths(result){const contract=result.row_contract;if(isRecord(contract)&&Array.isArray(contract.continuation_row_keys)){return contract.continuation_row_keys.filter(entry=>typeof entry==="string"&&entry.trim().length>0)}return readOutputRowPaths(result)}function readOutputRowCollections(result){return readOutputRowPaths(result).flatMap(rowPath=>{const value=valueAtPath(result,rowPath);return Array.isArray(value)||isRecord(value)?[{path:rowPath,value}]:[]})}function readOutputContinuationRowCollections(result){return readOutputContinuationRowPaths(result).flatMap(rowPath=>{const value=valueAtPath(result,rowPath);return Array.isArray(value)||isRecord(value)?[{path:rowPath,value}]:[]})}function readOutputBudgetCollections(result){const collections=readOutputRowCollections(result);const declaredPaths=new Set(collections.map(collection=>collection.path));const visit=(value,path)=>{if(Array.isArray(value)){if(!declaredPaths.has(path)){collections.push({path,value})}value.forEach((entry,index)=>visit(entry,`${path}.${index}`));return}if(!isRecord(value))return;for(const[key,entry]of Object.entries(value)){if(path.length===0&&BUDGET_METADATA_ROOT_KEYS.has(key))continue;visit(entry,path.length===0?key:`${path}.${key}`)}};visit(result,"");return collections}function countReadOutputRows(result){return readOutputRowCollections(result).reduce((total,collection)=>total+(Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length),0)}function mapReadOutputRows(result,transform){let projected=result;for(const collection of readOutputRowCollections(projected)){const replacement=Array.isArray(collection.value)?collection.value.map((row,index)=>transform(row,collection.path,index)):Object.fromEntries(Object.entries(collection.value).map(([key,row],index)=>[key,transform(row,collection.path,index)]));projected=replaceValueAtPath(projected,collection.path,replacement)}return projected}function boundReadOutputRows(result,amount){let projected=result;let truncated=false;for(const collection of readOutputRowCollections(projected)){const entries=Array.isArray(collection.value)?collection.value:Object.entries(collection.value);if(entries.length<=amount)continue;truncated=true;const replacement=Array.isArray(collection.value)?entries.slice(0,amount):Object.fromEntries(entries.slice(0,amount));projected=replaceValueAtPath(projected,collection.path,replacement)}return{result:projected,truncated}}export{boundReadOutputRows,countReadOutputRows,mapReadOutputRows,readOutputBudgetCollections,readOutputContinuationRowCollections,readOutputContinuationRowPaths,readOutputRowCollections,readOutputRowPaths,sliceReadOutputRowCollection};
1
+ !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d8631828-9fb8-5cdf-b448-43787147b44e")}catch(e2){}})();const BUDGET_METADATA_ROOT_KEYS=new Set(["applied_bound","completeness","budget_retention_policy","continuation_contract","continuation_kind","continuation_path","filters","omission_receipt","output_budget_truncation","projection","read_output","read_session","row_contract","sorting"]);function isRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function valueAtPath(result,rowPath){let value=result;for(const segment of rowPath.split(".")){if(Array.isArray(value)){if(!/^\d+$/u.test(segment))return void 0;value=value[Number(segment)]}else{if(!isRecord(value))return void 0;value=value[segment]}}return value}function replaceValueAtPath(result,rowPath,replacement){const segments=rowPath.split(".");const replace=(value,offset)=>{if(offset===segments.length)return replacement;const segment=segments[offset];if(Array.isArray(value)){const index=Number(segment);const cloned=[...value];cloned[index]=replace(value[index],offset+1);return cloned}const record=value;return{...record,[segment]:replace(record[segment],offset+1)}};return replace(result,0)}function sliceReadOutputRowCollection(result,rowPath,offset){const collection=readOutputContinuationRowCollections(result).find(entry=>entry.path===rowPath);if(!collection)return result;const replacement=Array.isArray(collection.value)?collection.value.slice(offset):Object.fromEntries(Object.entries(collection.value).slice(offset));const sliced=replaceValueAtPath(result,rowPath,replacement);if(isRecord(sliced.summary)&&isRecord(sliced.summary.focus_row_states)&&typeof sliced.summary.focus_row_states[rowPath]==="string"){sliced.summary={...sliced.summary,focus_row_states:{...sliced.summary.focus_row_states,[rowPath]:sliced.summary.focus_row_states[rowPath].slice(offset)}}}refreshReadOutputDeliveredCounts(sliced);return sliced}function readOutputRowPaths(result){const contract=result.row_contract;if(isRecord(contract)&&Array.isArray(contract.row_keys)){return contract.row_keys.filter(entry=>typeof entry==="string"&&entry.trim().length>0)}return Object.entries(result).filter(([,value])=>Array.isArray(value)).map(([key])=>key)}function readOutputContinuationRowPaths(result){const contract=result.row_contract;if(isRecord(contract)&&Array.isArray(contract.continuation_row_keys)){return contract.continuation_row_keys.filter(entry=>typeof entry==="string"&&entry.trim().length>0)}return readOutputRowPaths(result)}function readOutputRowCollections(result){return readOutputRowPaths(result).flatMap(rowPath=>{const value=valueAtPath(result,rowPath);return Array.isArray(value)||isRecord(value)?[{path:rowPath,value}]:[]})}function readOutputContinuationRowCollections(result){return readOutputContinuationRowPaths(result).flatMap(rowPath=>{const value=valueAtPath(result,rowPath);return Array.isArray(value)||isRecord(value)?[{path:rowPath,value}]:[]})}function readOutputBudgetCollections(result){const collections=readOutputRowCollections(result);const declaredPaths=new Set(collections.map(collection=>collection.path));const visit=(value,path)=>{if(Array.isArray(value)){if(!declaredPaths.has(path)){collections.push({path,value})}value.forEach((entry,index)=>visit(entry,`${path}.${index}`));return}if(!isRecord(value))return;for(const[key,entry]of Object.entries(value)){if(path.length===0&&BUDGET_METADATA_ROOT_KEYS.has(key))continue;visit(entry,path.length===0?key:`${path}.${key}`)}};visit(result,"");return collections}function countReadOutputRows(result){return readOutputRowCollections(result).reduce((total,collection)=>total+(Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length),0)}function mapReadOutputRows(result,transform){let projected=result;for(const collection of readOutputRowCollections(projected)){const replacement=Array.isArray(collection.value)?collection.value.map((row,index)=>transform(row,collection.path,index)):Object.fromEntries(Object.entries(collection.value).map(([key,row],index)=>[key,transform(row,collection.path,index)]));projected=replaceValueAtPath(projected,collection.path,replacement)}return projected}function boundReadOutputRows(result,amount){let projected=result;let truncated=false;for(const collection of readOutputRowCollections(projected)){const entries=Array.isArray(collection.value)?collection.value:Object.entries(collection.value);if(entries.length<=amount)continue;truncated=true;const replacement=Array.isArray(collection.value)?entries.slice(0,amount):Object.fromEntries(entries.slice(0,amount));projected=replaceValueAtPath(projected,collection.path,replacement)}return{result:projected,truncated}}const FOCUS_KEYS=["high_level","low_level","blocked_fallback"];function focusRowState(row){const state=row.status==="in_progress"?"i":"o";return row.blocked===true?state.toUpperCase():state}function rememberReadOutputFocusRows(result,rows){if(!isRecord(result.summary)||!isRecord(result.summary.returned_focus))return;const byId=new Map(rows.map(row=>[row.id,row]));result.summary={...result.summary,focus_row_states:Object.fromEntries(FOCUS_KEYS.map(key=>[key,Array.isArray(result[key])?result[key].filter(isRecord).map(row=>focusRowState(byId.get(row.id)??row)).join(""):""]))}}function validatedFocusStates(value,rows){if(value===void 0)return void 0;if(typeof value!=="string"||value.length!==rows||!/^[iIoO]*$/u.test(value)){throw new TypeError("Context focus classification receipt must contain one i/I/o/O code per delivered record")}return value}function deliveredFocusSectionStates(result,source,key,sourceStates){const original=Array.isArray(source[key])?source[key].filter(isRecord):[];const originalStates=validatedFocusStates(sourceStates[key],original.length)??original.map(focusRowState).join("");const byId=new Map(original.flatMap((row,index)=>row.id===void 0?[]:[[row.id,originalStates[index]]]));const delivered=Array.isArray(result[key])?result[key].filter(isRecord):[];let needsStates=false;const states=delivered.map((row,index)=>{const state=byId.get(row.id)??(row.id===void 0?originalStates[index]:void 0)??focusRowState(row);if(state!==focusRowState(row))needsStates=true;return state}).join("");return{states,needsStates}}function refreshItemCount(result,source){if(typeof result.count!=="number")return;if(result.count_only===true||source.count_only===true){if(typeof source.count==="number")result.count=source.count}else if(Array.isArray(result.items)){result.count=result.items.length}}function refreshReadOutputDeliveredCounts(result,source=result){refreshItemCount(result,source);if(!isRecord(result.summary)||!isRecord(result.summary.returned_focus))return;const summary={...result.summary};const sourceStates=isRecord(source.summary)&&isRecord(source.summary.focus_row_states)?source.summary.focus_row_states:{};const sections=FOCUS_KEYS.map(key=>({key,...deliveredFocusSectionStates(result,source,key,sourceStates)}));const states=Object.fromEntries(sections.map(({key,states:states2})=>[key,states2]));const needsStates=sections.some(section=>section.needsStates);const deliveredStates=Object.values(states).join("");if(typeof summary.high_level==="number")summary.high_level=Array.isArray(result.high_level)?result.high_level.length:0;if(typeof summary.low_level==="number")summary.low_level=Array.isArray(result.low_level)?result.low_level.length:0;summary.returned_focus={active_items:deliveredStates.length,in_progress:[...deliveredStates].filter(state=>state.toLowerCase()==="i").length,open:[...deliveredStates].filter(state=>state.toLowerCase()==="o").length,blocked:[...deliveredStates].filter(state=>state===state.toUpperCase()).length};if(needsStates)summary.focus_row_states=states;else delete summary.focus_row_states;result.summary=summary}export{boundReadOutputRows,countReadOutputRows,mapReadOutputRows,readOutputBudgetCollections,readOutputContinuationRowCollections,readOutputContinuationRowPaths,readOutputRowCollections,readOutputRowPaths,refreshReadOutputDeliveredCounts,rememberReadOutputFocusRows,sliceReadOutputRowCollection};
2
2
  //# sourceMappingURL=read-output-rows.js.map
@@ -76,8 +76,8 @@ export { migrateItemFilesToFormat } from "../core/store/item-format-migration.js
76
76
  export { type CachedDocumentCandidate, listAllDocumentCandidatesCached, } from "../core/store/item-metadata-cache.js";
77
77
  export { buildItemNotFoundError, createMutationGuardSdk, deleteItem, listAllItemMetadata, listAllItemMetadataLight, locateItem, mutateItem, mutateItemWithHistoryContext, readLocatedItem, } from "../core/store/item-store.js";
78
78
  export { isTerminalPlanMode, shouldCompletePlanOnClose, } from "../core/item/plan-lifecycle.js";
79
- export { getHistoryPath, getItemPath, getSettingsPath, resolveImplicitPmRoot, resolvePmRoot, resolveWorkspaceRoot, } from "../core/store/paths.js";
80
- export { persistSelectedItemFormat, readSettings, readSettingsWithMetadata, writeSettings, } from "../core/store/settings.js";
79
+ export { getHistoryPath, getItemPath, getSettingsPath, resolveGlobalPmRoot, resolveImplicitPmRoot, resolvePmRoot, resolveWorkspaceRoot, } from "../core/store/paths.js";
80
+ export { persistSelectedItemFormat, readSettings, readSettingsWithMetadata, runWithConfigurationOnlySettings, writeSettings, } from "../core/store/settings.js";
81
81
  export { maybeRunFirstUseTelemetryPrompt } from "../core/telemetry/consent.js";
82
82
  export { type TelemetryCommandResolution, type TelemetryResolutionStage, deriveTelemetryCommandResolution, } from "../core/telemetry/observability.js";
83
83
  export { type ActiveTelemetryCommand, type TelemetryCommandOutcome, emitTelemetryErrorEvent, finishTelemetryCommand, startTelemetryCommand, } from "../core/telemetry/runtime.js";
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7b64ac69-240e-504c-adc4-d5f3170d3de7")}catch(e2){}})();import{assertSchemaPreviewSupported}from"./runtime/schema-preview.js";import{createCheckpointId,loadMutationCheckpoint,restoreCheckpointItems,writeMutationCheckpoint}from"../core/checkpoint/mutation-checkpoint.js";import{flattenFlagListValue,resolveFlagValueKind}from"../core/extensions/flag-value-types.js";import{createUnknownSubcommandError}from"./agent/subcommand-recovery.js";import{activateExtensions,clearActiveExtensionHooks,consumeAfterCommandAffectedItems,createCoreCommandHookContext,createEmptyExtensionRegistrationRegistry,discoverExtensions,getActiveCommandResult,getActiveExtensionRegistrations,loadExtensions,projectAfterCommandItemSnapshot,recordAfterCommandAffectedItem,resetActiveExtensionRuntimeState,runActiveCommandHandler,runActiveBeforeMutationHooks,runActiveOnIndexHooks,runActiveOnReadHooks,runActiveOnWriteHooks,runActiveParserOverride,runActivePreflightOverride,runActiveServiceOverride,runAfterCommandHooks,runBeforeCommandHooks,setActiveCommandContext,setActiveCommandResult,setActiveExtensionCommands,setActiveExtensionHooks,setActiveExtensionParsers,setActiveExtensionPreflight,setActiveExtensionRegistrations,setActiveExtensionRenderers,setActiveExtensionServices}from"../core/extensions/index.js";import{applyRegisteredItemFieldDefaultsAndValidation,collectRegisteredItemFieldNames,parseRegisteredItemFieldAssignments}from"../core/extensions/item-fields.js";import{resolveExtensionRoots}from"../core/extensions/loader.js";import{resolveRegisteredSearchProvider,resolveRegisteredVectorStoreAdapter}from"../core/extensions/runtime-registrations.js";import{isFileMissingError,pathExists,readFileIfExists,removeFileIfExists,writeFileAtomic}from"../core/fs/fs-utils.js";import{normalizeBulkIdsValue,parseBulkIdsText,resolveCliBulkIdsInput}from"../core/io/bulk-ids-input.js";import{computeHistoryDiff,patchPathToChangedField}from"../core/history/history-diff.js";import{enforceHistoryStreamPolicyForItem,enforceHistoryStreamPolicyForItems}from"../core/history/history-stream-policy.js";import{appendHistoryEntry,CURRENT_HISTORY_ITEM_HASH_VERSION,CURRENT_HISTORY_RECORD_HASH_VERSION,createHistoryEntry,hashDocument,hashDocumentForVersion,hashEmptyDocument,hashHistoryPatch,hashHistoryRecord,hashHistoryStream,resealHistoryRewrite,sealHistoryRecord,SUPPORTED_HISTORY_ITEM_HASH_VERSIONS,SUPPORTED_HISTORY_RECORD_HASH_VERSIONS,verifyHistoryRecordHash,verifyHistoryRewriteEvidence}from"../core/history/history.js";import{readHistoryEntries}from"../core/history/read.js";import{appendWorkspaceAuditEvent,appendWorkspaceHistoryChange,getWorkspaceHistoryPath,inspectWorkspaceHistoryState,mutateWorkspaceJsonWithHistory,reconcileWorkspaceJsonHistory,restoreWorkspaceJsonFromHistory,WORKSPACE_HISTORY_ID,writeWorkspaceJsonWithHistory}from"../core/history/workspace-history.js";import{normalizeReplayPatchOps,reanchorHistoryEntries,replayToCanonicalItemDocument,replayToItemDocument,toReplayDocument,verifyHistoryChain,verifyHistoryChainWithVersion}from"../core/history/replay.js";import{resolveBodyFileContent}from"../core/io/body-file.js";import{generateItemId,normalizeItemId,normalizeRawItemId}from"../core/item/id.js";import{canonicalDocument,normalizeItemMetadata,parseItemDocument,serializeItemDocument}from"../core/item/item-format.js";import{toItemRecord}from"../core/item/item-record.js";import{assertParentReferenceIsNotSelf,isPlaceholderReferenceToken,normalizeParentReferenceValue,validateMissingParentReference}from"../core/item/parent-reference-policy.js";import{applyAcceptanceCriteriaMutations,applyTagRemovals,assertNoUnknownCsvKeys,createStdinTokenResolver,looksLikeGenericKeyValueEntry,mergeAdditiveTags,parseCsvKv,parseOptionalNonNegativeInteger,parseOptionalNumber,parseTags,preserveMutationStdinTokenFields,preserveMutationStdinTokenLiterals,transferMutationStdinTokenPolicy,shouldResolveMutationStdinTokenField,shouldResolveMutationStdinTokens,splitAcceptanceCriteria}from"../core/item/parse.js";import{resolvePriority}from"../core/item/priority.js";import{validateSprintOrReleaseValue}from"../core/item/sprint-release-format.js";import{parseStatusFilterCsv}from"../core/item/status-filter.js";import{isTerminalStatus,normalizeStatusForRegistry,normalizeStatusInput}from"../core/item/status.js";import{COMMON_MUTATION_COMMAND_OPTION_KEYS,canonicalizeCommandOptionKey,commandOptionFlagLabel,resolveCommandOptionPolicyState,resolveItemTypeRegistry,resolveTypeDefinition,resolveTypeName,validateTypeOptions}from"../core/item/type-registry.js";import{resolveTypeSynonym}from"../core/item/type-synonyms.js";import{acquireLock}from"../core/lock/lock.js";import{printError,printResult,writeStderr,writeStdout}from"../core/output/output.js";import{renderRowsAsCsv,renderRowsAsTable}from"../core/output/tabular.js";import{parseLimit}from"../core/shared/numeric-parsers.js";import{resolveConfiguredPmPackageRoot,resolvePmCliVersion,resolvePmPackageRootFromModule}from"../core/packages/root.js";import{buildInvalidTypeError}from"../core/schema/item-types-file.js";import{collectRuntimeFilterValues,matchesRuntimeFilters}from"../core/schema/runtime-field-filters.js";import{collectRuntimeCreateFieldValues,collectRuntimeUpdateFieldValues}from"../core/schema/runtime-field-values.js";import{normalizeStatusInputWithRegistry,resolveItemTypesFilePath,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,statusIsTerminal}from"../core/schema/runtime-schema.js";import{describeAllowedTransitions,evaluateTransition,resolveTypeWorkflows}from"../core/schema/type-workflows.js";import{REINDEX_LOCK_ID,shouldRunSearchRefreshInForeground}from"../core/search/background-refresh.js";import{readVectorizationStatusLedger,refreshSearchArtifactsForMutation,writeVectorizationStatusLedger}from"../core/search/cache.js";import{buildSearchCorpus,buildSemanticCorpusInput,resolveSearchCorpusFields,resolveSemanticCorpusCharacterLimit}from"../core/search/corpus.js";import{executeEmbeddingBatchesWithRetry}from"../core/search/embedding-batches.js";import{resolveEmbeddingProviders}from"../core/search/providers.js";import{resolveSettingsWithSemanticRuntimeDefaults}from"../core/search/semantic-defaults.js";import{executeVectorDelete,executeVectorReset,executeVectorUpsert,resolveVectorStores}from"../core/search/vector-stores.js";import{buildVectorizationEmbeddingIdentity,buildVectorizationEmbeddingMetadata,hasVectorizationEmbeddingIdentityChanged,hasVectorizationVectorDimensionChanged,inferConsistentVectorDimension}from"../core/search/vectorization-metadata.js";import{sentryCaptureCliError,sentryFinishCommandSpan,sentryFlush,sentryLogCliUsageError,sentrySetCommandContext,sentryStartCommandSpan}from"../core/sentry/helpers.js";import{ensureSentryInit}from"../core/sentry/instrument.js";import{clearFocusedItem,getFocusedItem,setFocusedItem}from"../core/session/session-state.js";import{readAuthorEnvironment,diagnoseAgentIdentity,resolveAuthor,resolveClaimPrincipal,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,BUILTIN_AGENT_PROVENANCE_ADAPTERS,listAgentProvenanceAdapters,normalizeAgentProvenanceAdapterValue,registerAgentProvenanceAdapters,writeAuthorEnvironment}from"../core/shared/author.js";import{agentSessionEnvironment,boundAgentEpisodeIdentity,runWithAgentSessionContext,resolveAgentSessionContextFromSignals}from"../core/shared/agent-session-context.js";import{evaluateMutationGuard,isMutationAction,listMutationActions,scanMutationSecrets}from"./mutation-guard.js";import{jaccardSimilarity,normalizeSimilarityText,scoreItemSimilarity,tokenizeSimilarityText}from"./similarity-scoring.js";import{inspectStaleInProgressItems,scanStaleInProgressItems}from"./governance/stale-work.js";import{CREATE_DIRECT_CLOSE_REASON_DEFAULT,EXIT_CODE,ITEM_METADATA_KEY_ORDER,SETTINGS_DEFAULTS,TYPE_TO_FOLDER,resolveTelemetryErrorCategory}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{decodeHtmlEntitiesInOptions}from"../core/shared/html-entity-decode.js";import{createLazyModule}from"../core/shared/lazy-module.js";import{levenshteinDistanceWithinLimit}from"../core/shared/levenshtein.js";import{isPureSnakeCaseAlias}from"../core/shared/option-alias-visibility.js";import{asRecordClone,asRecordOrNull,toErrorMessage,toNonEmptyStringOrUndefined}from"../core/shared/primitives.js";import{createSerialQueue}from"../core/shared/serial-queue.js";import{stableStringify,stableValueEquals}from"../core/shared/serialization.js";import{splitCommaList}from"../core/shared/split-comma-list.js";import{compareTimestampStrings,nowIso,resolveIsoOrRelative}from"../core/shared/time.js";import{migrateItemFilesToFormat}from"../core/store/item-format-migration.js";import{listAllDocumentCandidatesCached}from"../core/store/item-metadata-cache.js";import{buildItemNotFoundError,createMutationGuardSdk,deleteItem,listAllItemMetadata,listAllItemMetadataLight,locateItem,mutateItem,mutateItemWithHistoryContext,readLocatedItem}from"../core/store/item-store.js";import{isTerminalPlanMode,shouldCompletePlanOnClose}from"../core/item/plan-lifecycle.js";import{getHistoryPath,getItemPath,getSettingsPath,resolveImplicitPmRoot,resolvePmRoot,resolveWorkspaceRoot}from"../core/store/paths.js";import{persistSelectedItemFormat,readSettings,readSettingsWithMetadata,writeSettings}from"../core/store/settings.js";import{maybeRunFirstUseTelemetryPrompt}from"../core/telemetry/consent.js";import{deriveTelemetryCommandResolution}from"../core/telemetry/observability.js";import{emitTelemetryErrorEvent,finishTelemetryCommand,startTelemetryCommand}from"../core/telemetry/runtime.js";export{BUILTIN_AGENT_PROVENANCE_ADAPTERS,COMMON_MUTATION_COMMAND_OPTION_KEYS,CREATE_DIRECT_CLOSE_REASON_DEFAULT,CURRENT_HISTORY_ITEM_HASH_VERSION,CURRENT_HISTORY_RECORD_HASH_VERSION,EXIT_CODE,ITEM_METADATA_KEY_ORDER,PmCliError,REINDEX_LOCK_ID,SETTINGS_DEFAULTS,SUPPORTED_HISTORY_ITEM_HASH_VERSIONS,SUPPORTED_HISTORY_RECORD_HASH_VERSIONS,TYPE_TO_FOLDER,WORKSPACE_HISTORY_ID,acquireLock,activateExtensions,agentSessionEnvironment,appendHistoryEntry,appendWorkspaceAuditEvent,appendWorkspaceHistoryChange,applyAcceptanceCriteriaMutations,applyRegisteredItemFieldDefaultsAndValidation,applyTagRemovals,asRecordClone,asRecordOrNull,assertNoUnknownCsvKeys,assertParentReferenceIsNotSelf,assertSchemaPreviewSupported,boundAgentEpisodeIdentity,buildInvalidTypeError,buildItemNotFoundError,buildSearchCorpus,buildSemanticCorpusInput,buildVectorizationEmbeddingIdentity,buildVectorizationEmbeddingMetadata,canonicalDocument,canonicalizeCommandOptionKey,clearActiveExtensionHooks,clearFocusedItem,collectRegisteredItemFieldNames,collectRuntimeCreateFieldValues,collectRuntimeFilterValues,collectRuntimeUpdateFieldValues,commandOptionFlagLabel,compareTimestampStrings,computeHistoryDiff,consumeAfterCommandAffectedItems,createCheckpointId,createCoreCommandHookContext,createEmptyExtensionRegistrationRegistry,createHistoryEntry,createLazyModule,createMutationGuardSdk,createSerialQueue,createStdinTokenResolver,createUnknownSubcommandError,decodeHtmlEntitiesInOptions,deleteItem,deriveTelemetryCommandResolution,describeAllowedTransitions,diagnoseAgentIdentity,discoverExtensions,emitTelemetryErrorEvent,enforceHistoryStreamPolicyForItem,enforceHistoryStreamPolicyForItems,ensureSentryInit,evaluateMutationGuard,evaluateTransition,executeEmbeddingBatchesWithRetry,executeVectorDelete,executeVectorReset,executeVectorUpsert,finishTelemetryCommand,flattenFlagListValue,generateItemId,getActiveCommandResult,getActiveExtensionRegistrations,getFocusedItem,getHistoryPath,getItemPath,getSettingsPath,getWorkspaceHistoryPath,hasVectorizationEmbeddingIdentityChanged,hasVectorizationVectorDimensionChanged,hashDocument,hashDocumentForVersion,hashEmptyDocument,hashHistoryPatch,hashHistoryRecord,hashHistoryStream,inferConsistentVectorDimension,inspectStaleInProgressItems,inspectWorkspaceHistoryState,isFileMissingError,isMutationAction,isPlaceholderReferenceToken,isPureSnakeCaseAlias,isTerminalPlanMode,isTerminalStatus,jaccardSimilarity,levenshteinDistanceWithinLimit,listAgentProvenanceAdapters,listAllDocumentCandidatesCached,listAllItemMetadata,listAllItemMetadataLight,listMutationActions,loadExtensions,loadMutationCheckpoint,locateItem,looksLikeGenericKeyValueEntry,matchesRuntimeFilters,maybeRunFirstUseTelemetryPrompt,mergeAdditiveTags,migrateItemFilesToFormat,mutateItem,mutateItemWithHistoryContext,mutateWorkspaceJsonWithHistory,normalizeAgentProvenanceAdapterValue,normalizeBulkIdsValue,normalizeItemId,normalizeItemMetadata,normalizeParentReferenceValue,normalizeRawItemId,normalizeReplayPatchOps,normalizeSimilarityText,normalizeStatusForRegistry,normalizeStatusInput,normalizeStatusInputWithRegistry,nowIso,parseBulkIdsText,parseCsvKv,parseItemDocument,parseLimit,parseOptionalNonNegativeInteger,parseOptionalNumber,parseRegisteredItemFieldAssignments,parseStatusFilterCsv,parseTags,patchPathToChangedField,pathExists,persistSelectedItemFormat,preserveMutationStdinTokenFields,preserveMutationStdinTokenLiterals,printError,printResult,projectAfterCommandItemSnapshot,readAuthorEnvironment,readFileIfExists,readHistoryEntries,readLocatedItem,readSettings,readSettingsWithMetadata,readVectorizationStatusLedger,reanchorHistoryEntries,reconcileWorkspaceJsonHistory,recordAfterCommandAffectedItem,refreshSearchArtifactsForMutation,registerAgentProvenanceAdapters,removeFileIfExists,renderRowsAsCsv,renderRowsAsTable,replayToCanonicalItemDocument,replayToItemDocument,resealHistoryRewrite,resetActiveExtensionRuntimeState,resolveAgentSessionContextFromSignals,resolveAuthor,resolveBodyFileContent,resolveClaimPrincipal,resolveCliBulkIdsInput,resolveCommandOptionPolicyState,resolveConfiguredPmPackageRoot,resolveEmbeddingProviders,resolveExtensionRoots,resolveFlagValueKind,resolveImplicitPmRoot,resolveIsoOrRelative,resolveItemTypeRegistry,resolveItemTypesFilePath,resolvePmCliVersion,resolvePmPackageRootFromModule,resolvePmRoot,resolvePriority,resolveRegisteredSearchProvider,resolveRegisteredVectorStoreAdapter,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,resolveSearchCorpusFields,resolveSemanticCorpusCharacterLimit,resolveSettingsWithSemanticRuntimeDefaults,resolveTelemetryErrorCategory,resolveTypeDefinition,resolveTypeName,resolveTypeSynonym,resolveTypeWorkflows,resolveVectorStores,resolveWorkspaceRoot,restoreCheckpointItems,restoreWorkspaceJsonFromHistory,runActiveBeforeMutationHooks,runActiveCommandHandler,runActiveOnIndexHooks,runActiveOnReadHooks,runActiveOnWriteHooks,runActiveParserOverride,runActivePreflightOverride,runActiveServiceOverride,runAfterCommandHooks,runBeforeCommandHooks,runWithAgentSessionContext,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,scanMutationSecrets,scanStaleInProgressItems,scoreItemSimilarity,sealHistoryRecord,sentryCaptureCliError,sentryFinishCommandSpan,sentryFlush,sentryLogCliUsageError,sentrySetCommandContext,sentryStartCommandSpan,serializeItemDocument,setActiveCommandContext,setActiveCommandResult,setActiveExtensionCommands,setActiveExtensionHooks,setActiveExtensionParsers,setActiveExtensionPreflight,setActiveExtensionRegistrations,setActiveExtensionRenderers,setActiveExtensionServices,setFocusedItem,shouldCompletePlanOnClose,shouldResolveMutationStdinTokenField,shouldResolveMutationStdinTokens,shouldRunSearchRefreshInForeground,splitAcceptanceCriteria,splitCommaList,stableStringify,stableValueEquals,startTelemetryCommand,statusIsTerminal,toErrorMessage,toItemRecord,toNonEmptyStringOrUndefined,toReplayDocument,tokenizeSimilarityText,transferMutationStdinTokenPolicy,validateMissingParentReference,validateSprintOrReleaseValue,validateTypeOptions,verifyHistoryChain,verifyHistoryChainWithVersion,verifyHistoryRecordHash,verifyHistoryRewriteEvidence,writeAuthorEnvironment,writeFileAtomic,writeMutationCheckpoint,writeSettings,writeStderr,writeStdout,writeVectorizationStatusLedger,writeWorkspaceJsonWithHistory};
1
+ !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a3b93077-f162-5874-b81b-5d6b8be427b5")}catch(e2){}})();import{assertSchemaPreviewSupported}from"./runtime/schema-preview.js";import{createCheckpointId,loadMutationCheckpoint,restoreCheckpointItems,writeMutationCheckpoint}from"../core/checkpoint/mutation-checkpoint.js";import{flattenFlagListValue,resolveFlagValueKind}from"../core/extensions/flag-value-types.js";import{createUnknownSubcommandError}from"./agent/subcommand-recovery.js";import{activateExtensions,clearActiveExtensionHooks,consumeAfterCommandAffectedItems,createCoreCommandHookContext,createEmptyExtensionRegistrationRegistry,discoverExtensions,getActiveCommandResult,getActiveExtensionRegistrations,loadExtensions,projectAfterCommandItemSnapshot,recordAfterCommandAffectedItem,resetActiveExtensionRuntimeState,runActiveCommandHandler,runActiveBeforeMutationHooks,runActiveOnIndexHooks,runActiveOnReadHooks,runActiveOnWriteHooks,runActiveParserOverride,runActivePreflightOverride,runActiveServiceOverride,runAfterCommandHooks,runBeforeCommandHooks,setActiveCommandContext,setActiveCommandResult,setActiveExtensionCommands,setActiveExtensionHooks,setActiveExtensionParsers,setActiveExtensionPreflight,setActiveExtensionRegistrations,setActiveExtensionRenderers,setActiveExtensionServices}from"../core/extensions/index.js";import{applyRegisteredItemFieldDefaultsAndValidation,collectRegisteredItemFieldNames,parseRegisteredItemFieldAssignments}from"../core/extensions/item-fields.js";import{resolveExtensionRoots}from"../core/extensions/loader.js";import{resolveRegisteredSearchProvider,resolveRegisteredVectorStoreAdapter}from"../core/extensions/runtime-registrations.js";import{isFileMissingError,pathExists,readFileIfExists,removeFileIfExists,writeFileAtomic}from"../core/fs/fs-utils.js";import{normalizeBulkIdsValue,parseBulkIdsText,resolveCliBulkIdsInput}from"../core/io/bulk-ids-input.js";import{computeHistoryDiff,patchPathToChangedField}from"../core/history/history-diff.js";import{enforceHistoryStreamPolicyForItem,enforceHistoryStreamPolicyForItems}from"../core/history/history-stream-policy.js";import{appendHistoryEntry,CURRENT_HISTORY_ITEM_HASH_VERSION,CURRENT_HISTORY_RECORD_HASH_VERSION,createHistoryEntry,hashDocument,hashDocumentForVersion,hashEmptyDocument,hashHistoryPatch,hashHistoryRecord,hashHistoryStream,resealHistoryRewrite,sealHistoryRecord,SUPPORTED_HISTORY_ITEM_HASH_VERSIONS,SUPPORTED_HISTORY_RECORD_HASH_VERSIONS,verifyHistoryRecordHash,verifyHistoryRewriteEvidence}from"../core/history/history.js";import{readHistoryEntries}from"../core/history/read.js";import{appendWorkspaceAuditEvent,appendWorkspaceHistoryChange,getWorkspaceHistoryPath,inspectWorkspaceHistoryState,mutateWorkspaceJsonWithHistory,reconcileWorkspaceJsonHistory,restoreWorkspaceJsonFromHistory,WORKSPACE_HISTORY_ID,writeWorkspaceJsonWithHistory}from"../core/history/workspace-history.js";import{normalizeReplayPatchOps,reanchorHistoryEntries,replayToCanonicalItemDocument,replayToItemDocument,toReplayDocument,verifyHistoryChain,verifyHistoryChainWithVersion}from"../core/history/replay.js";import{resolveBodyFileContent}from"../core/io/body-file.js";import{generateItemId,normalizeItemId,normalizeRawItemId}from"../core/item/id.js";import{canonicalDocument,normalizeItemMetadata,parseItemDocument,serializeItemDocument}from"../core/item/item-format.js";import{toItemRecord}from"../core/item/item-record.js";import{assertParentReferenceIsNotSelf,isPlaceholderReferenceToken,normalizeParentReferenceValue,validateMissingParentReference}from"../core/item/parent-reference-policy.js";import{applyAcceptanceCriteriaMutations,applyTagRemovals,assertNoUnknownCsvKeys,createStdinTokenResolver,looksLikeGenericKeyValueEntry,mergeAdditiveTags,parseCsvKv,parseOptionalNonNegativeInteger,parseOptionalNumber,parseTags,preserveMutationStdinTokenFields,preserveMutationStdinTokenLiterals,transferMutationStdinTokenPolicy,shouldResolveMutationStdinTokenField,shouldResolveMutationStdinTokens,splitAcceptanceCriteria}from"../core/item/parse.js";import{resolvePriority}from"../core/item/priority.js";import{validateSprintOrReleaseValue}from"../core/item/sprint-release-format.js";import{parseStatusFilterCsv}from"../core/item/status-filter.js";import{isTerminalStatus,normalizeStatusForRegistry,normalizeStatusInput}from"../core/item/status.js";import{COMMON_MUTATION_COMMAND_OPTION_KEYS,canonicalizeCommandOptionKey,commandOptionFlagLabel,resolveCommandOptionPolicyState,resolveItemTypeRegistry,resolveTypeDefinition,resolveTypeName,validateTypeOptions}from"../core/item/type-registry.js";import{resolveTypeSynonym}from"../core/item/type-synonyms.js";import{acquireLock}from"../core/lock/lock.js";import{printError,printResult,writeStderr,writeStdout}from"../core/output/output.js";import{renderRowsAsCsv,renderRowsAsTable}from"../core/output/tabular.js";import{parseLimit}from"../core/shared/numeric-parsers.js";import{resolveConfiguredPmPackageRoot,resolvePmCliVersion,resolvePmPackageRootFromModule}from"../core/packages/root.js";import{buildInvalidTypeError}from"../core/schema/item-types-file.js";import{collectRuntimeFilterValues,matchesRuntimeFilters}from"../core/schema/runtime-field-filters.js";import{collectRuntimeCreateFieldValues,collectRuntimeUpdateFieldValues}from"../core/schema/runtime-field-values.js";import{normalizeStatusInputWithRegistry,resolveItemTypesFilePath,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,statusIsTerminal}from"../core/schema/runtime-schema.js";import{describeAllowedTransitions,evaluateTransition,resolveTypeWorkflows}from"../core/schema/type-workflows.js";import{REINDEX_LOCK_ID,shouldRunSearchRefreshInForeground}from"../core/search/background-refresh.js";import{readVectorizationStatusLedger,refreshSearchArtifactsForMutation,writeVectorizationStatusLedger}from"../core/search/cache.js";import{buildSearchCorpus,buildSemanticCorpusInput,resolveSearchCorpusFields,resolveSemanticCorpusCharacterLimit}from"../core/search/corpus.js";import{executeEmbeddingBatchesWithRetry}from"../core/search/embedding-batches.js";import{resolveEmbeddingProviders}from"../core/search/providers.js";import{resolveSettingsWithSemanticRuntimeDefaults}from"../core/search/semantic-defaults.js";import{executeVectorDelete,executeVectorReset,executeVectorUpsert,resolveVectorStores}from"../core/search/vector-stores.js";import{buildVectorizationEmbeddingIdentity,buildVectorizationEmbeddingMetadata,hasVectorizationEmbeddingIdentityChanged,hasVectorizationVectorDimensionChanged,inferConsistentVectorDimension}from"../core/search/vectorization-metadata.js";import{sentryCaptureCliError,sentryFinishCommandSpan,sentryFlush,sentryLogCliUsageError,sentrySetCommandContext,sentryStartCommandSpan}from"../core/sentry/helpers.js";import{ensureSentryInit}from"../core/sentry/instrument.js";import{clearFocusedItem,getFocusedItem,setFocusedItem}from"../core/session/session-state.js";import{readAuthorEnvironment,diagnoseAgentIdentity,resolveAuthor,resolveClaimPrincipal,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,BUILTIN_AGENT_PROVENANCE_ADAPTERS,listAgentProvenanceAdapters,normalizeAgentProvenanceAdapterValue,registerAgentProvenanceAdapters,writeAuthorEnvironment}from"../core/shared/author.js";import{agentSessionEnvironment,boundAgentEpisodeIdentity,runWithAgentSessionContext,resolveAgentSessionContextFromSignals}from"../core/shared/agent-session-context.js";import{evaluateMutationGuard,isMutationAction,listMutationActions,scanMutationSecrets}from"./mutation-guard.js";import{jaccardSimilarity,normalizeSimilarityText,scoreItemSimilarity,tokenizeSimilarityText}from"./similarity-scoring.js";import{inspectStaleInProgressItems,scanStaleInProgressItems}from"./governance/stale-work.js";import{CREATE_DIRECT_CLOSE_REASON_DEFAULT,EXIT_CODE,ITEM_METADATA_KEY_ORDER,SETTINGS_DEFAULTS,TYPE_TO_FOLDER,resolveTelemetryErrorCategory}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{decodeHtmlEntitiesInOptions}from"../core/shared/html-entity-decode.js";import{createLazyModule}from"../core/shared/lazy-module.js";import{levenshteinDistanceWithinLimit}from"../core/shared/levenshtein.js";import{isPureSnakeCaseAlias}from"../core/shared/option-alias-visibility.js";import{asRecordClone,asRecordOrNull,toErrorMessage,toNonEmptyStringOrUndefined}from"../core/shared/primitives.js";import{createSerialQueue}from"../core/shared/serial-queue.js";import{stableStringify,stableValueEquals}from"../core/shared/serialization.js";import{splitCommaList}from"../core/shared/split-comma-list.js";import{compareTimestampStrings,nowIso,resolveIsoOrRelative}from"../core/shared/time.js";import{migrateItemFilesToFormat}from"../core/store/item-format-migration.js";import{listAllDocumentCandidatesCached}from"../core/store/item-metadata-cache.js";import{buildItemNotFoundError,createMutationGuardSdk,deleteItem,listAllItemMetadata,listAllItemMetadataLight,locateItem,mutateItem,mutateItemWithHistoryContext,readLocatedItem}from"../core/store/item-store.js";import{isTerminalPlanMode,shouldCompletePlanOnClose}from"../core/item/plan-lifecycle.js";import{getHistoryPath,getItemPath,getSettingsPath,resolveGlobalPmRoot,resolveImplicitPmRoot,resolvePmRoot,resolveWorkspaceRoot}from"../core/store/paths.js";import{persistSelectedItemFormat,readSettings,readSettingsWithMetadata,runWithConfigurationOnlySettings,writeSettings}from"../core/store/settings.js";import{maybeRunFirstUseTelemetryPrompt}from"../core/telemetry/consent.js";import{deriveTelemetryCommandResolution}from"../core/telemetry/observability.js";import{emitTelemetryErrorEvent,finishTelemetryCommand,startTelemetryCommand}from"../core/telemetry/runtime.js";export{BUILTIN_AGENT_PROVENANCE_ADAPTERS,COMMON_MUTATION_COMMAND_OPTION_KEYS,CREATE_DIRECT_CLOSE_REASON_DEFAULT,CURRENT_HISTORY_ITEM_HASH_VERSION,CURRENT_HISTORY_RECORD_HASH_VERSION,EXIT_CODE,ITEM_METADATA_KEY_ORDER,PmCliError,REINDEX_LOCK_ID,SETTINGS_DEFAULTS,SUPPORTED_HISTORY_ITEM_HASH_VERSIONS,SUPPORTED_HISTORY_RECORD_HASH_VERSIONS,TYPE_TO_FOLDER,WORKSPACE_HISTORY_ID,acquireLock,activateExtensions,agentSessionEnvironment,appendHistoryEntry,appendWorkspaceAuditEvent,appendWorkspaceHistoryChange,applyAcceptanceCriteriaMutations,applyRegisteredItemFieldDefaultsAndValidation,applyTagRemovals,asRecordClone,asRecordOrNull,assertNoUnknownCsvKeys,assertParentReferenceIsNotSelf,assertSchemaPreviewSupported,boundAgentEpisodeIdentity,buildInvalidTypeError,buildItemNotFoundError,buildSearchCorpus,buildSemanticCorpusInput,buildVectorizationEmbeddingIdentity,buildVectorizationEmbeddingMetadata,canonicalDocument,canonicalizeCommandOptionKey,clearActiveExtensionHooks,clearFocusedItem,collectRegisteredItemFieldNames,collectRuntimeCreateFieldValues,collectRuntimeFilterValues,collectRuntimeUpdateFieldValues,commandOptionFlagLabel,compareTimestampStrings,computeHistoryDiff,consumeAfterCommandAffectedItems,createCheckpointId,createCoreCommandHookContext,createEmptyExtensionRegistrationRegistry,createHistoryEntry,createLazyModule,createMutationGuardSdk,createSerialQueue,createStdinTokenResolver,createUnknownSubcommandError,decodeHtmlEntitiesInOptions,deleteItem,deriveTelemetryCommandResolution,describeAllowedTransitions,diagnoseAgentIdentity,discoverExtensions,emitTelemetryErrorEvent,enforceHistoryStreamPolicyForItem,enforceHistoryStreamPolicyForItems,ensureSentryInit,evaluateMutationGuard,evaluateTransition,executeEmbeddingBatchesWithRetry,executeVectorDelete,executeVectorReset,executeVectorUpsert,finishTelemetryCommand,flattenFlagListValue,generateItemId,getActiveCommandResult,getActiveExtensionRegistrations,getFocusedItem,getHistoryPath,getItemPath,getSettingsPath,getWorkspaceHistoryPath,hasVectorizationEmbeddingIdentityChanged,hasVectorizationVectorDimensionChanged,hashDocument,hashDocumentForVersion,hashEmptyDocument,hashHistoryPatch,hashHistoryRecord,hashHistoryStream,inferConsistentVectorDimension,inspectStaleInProgressItems,inspectWorkspaceHistoryState,isFileMissingError,isMutationAction,isPlaceholderReferenceToken,isPureSnakeCaseAlias,isTerminalPlanMode,isTerminalStatus,jaccardSimilarity,levenshteinDistanceWithinLimit,listAgentProvenanceAdapters,listAllDocumentCandidatesCached,listAllItemMetadata,listAllItemMetadataLight,listMutationActions,loadExtensions,loadMutationCheckpoint,locateItem,looksLikeGenericKeyValueEntry,matchesRuntimeFilters,maybeRunFirstUseTelemetryPrompt,mergeAdditiveTags,migrateItemFilesToFormat,mutateItem,mutateItemWithHistoryContext,mutateWorkspaceJsonWithHistory,normalizeAgentProvenanceAdapterValue,normalizeBulkIdsValue,normalizeItemId,normalizeItemMetadata,normalizeParentReferenceValue,normalizeRawItemId,normalizeReplayPatchOps,normalizeSimilarityText,normalizeStatusForRegistry,normalizeStatusInput,normalizeStatusInputWithRegistry,nowIso,parseBulkIdsText,parseCsvKv,parseItemDocument,parseLimit,parseOptionalNonNegativeInteger,parseOptionalNumber,parseRegisteredItemFieldAssignments,parseStatusFilterCsv,parseTags,patchPathToChangedField,pathExists,persistSelectedItemFormat,preserveMutationStdinTokenFields,preserveMutationStdinTokenLiterals,printError,printResult,projectAfterCommandItemSnapshot,readAuthorEnvironment,readFileIfExists,readHistoryEntries,readLocatedItem,readSettings,readSettingsWithMetadata,readVectorizationStatusLedger,reanchorHistoryEntries,reconcileWorkspaceJsonHistory,recordAfterCommandAffectedItem,refreshSearchArtifactsForMutation,registerAgentProvenanceAdapters,removeFileIfExists,renderRowsAsCsv,renderRowsAsTable,replayToCanonicalItemDocument,replayToItemDocument,resealHistoryRewrite,resetActiveExtensionRuntimeState,resolveAgentSessionContextFromSignals,resolveAuthor,resolveBodyFileContent,resolveClaimPrincipal,resolveCliBulkIdsInput,resolveCommandOptionPolicyState,resolveConfiguredPmPackageRoot,resolveEmbeddingProviders,resolveExtensionRoots,resolveFlagValueKind,resolveGlobalPmRoot,resolveImplicitPmRoot,resolveIsoOrRelative,resolveItemTypeRegistry,resolveItemTypesFilePath,resolvePmCliVersion,resolvePmPackageRootFromModule,resolvePmRoot,resolvePriority,resolveRegisteredSearchProvider,resolveRegisteredVectorStoreAdapter,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,resolveSearchCorpusFields,resolveSemanticCorpusCharacterLimit,resolveSettingsWithSemanticRuntimeDefaults,resolveTelemetryErrorCategory,resolveTypeDefinition,resolveTypeName,resolveTypeSynonym,resolveTypeWorkflows,resolveVectorStores,resolveWorkspaceRoot,restoreCheckpointItems,restoreWorkspaceJsonFromHistory,runActiveBeforeMutationHooks,runActiveCommandHandler,runActiveOnIndexHooks,runActiveOnReadHooks,runActiveOnWriteHooks,runActiveParserOverride,runActivePreflightOverride,runActiveServiceOverride,runAfterCommandHooks,runBeforeCommandHooks,runWithAgentSessionContext,runWithConfigurationOnlySettings,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,scanMutationSecrets,scanStaleInProgressItems,scoreItemSimilarity,sealHistoryRecord,sentryCaptureCliError,sentryFinishCommandSpan,sentryFlush,sentryLogCliUsageError,sentrySetCommandContext,sentryStartCommandSpan,serializeItemDocument,setActiveCommandContext,setActiveCommandResult,setActiveExtensionCommands,setActiveExtensionHooks,setActiveExtensionParsers,setActiveExtensionPreflight,setActiveExtensionRegistrations,setActiveExtensionRenderers,setActiveExtensionServices,setFocusedItem,shouldCompletePlanOnClose,shouldResolveMutationStdinTokenField,shouldResolveMutationStdinTokens,shouldRunSearchRefreshInForeground,splitAcceptanceCriteria,splitCommaList,stableStringify,stableValueEquals,startTelemetryCommand,statusIsTerminal,toErrorMessage,toItemRecord,toNonEmptyStringOrUndefined,toReplayDocument,tokenizeSimilarityText,transferMutationStdinTokenPolicy,validateMissingParentReference,validateSprintOrReleaseValue,validateTypeOptions,verifyHistoryChain,verifyHistoryChainWithVersion,verifyHistoryRecordHash,verifyHistoryRewriteEvidence,writeAuthorEnvironment,writeFileAtomic,writeMutationCheckpoint,writeSettings,writeStderr,writeStdout,writeVectorizationStatusLedger,writeWorkspaceJsonWithHistory};
2
2
  //# sourceMappingURL=runtime-primitives.js.map