@elevasis/sdk 1.44.3 → 1.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/dist/cli.cjs +35026 -30226
  2. package/dist/index.d.ts +1786 -808
  3. package/dist/index.js +789 -739
  4. package/dist/node/index.d.ts +105 -181
  5. package/dist/node/index.js +2 -2
  6. package/dist/test-utils/index.d.ts +901 -359
  7. package/dist/test-utils/index.js +587 -824
  8. package/dist/worker/index.d.ts +12685 -0
  9. package/dist/worker/index.js +188 -216
  10. package/package.json +4 -7
  11. package/reference/_navigation.md +161 -22
  12. package/reference/_reference-manifest.json +228 -4
  13. package/reference/claude-config.md +8 -0
  14. package/reference/core/exports.mdx +2 -0
  15. package/reference/core/index.mdx +3 -3
  16. package/reference/examples/organization-model.ts +117 -111
  17. package/reference/index.mdx +4 -4
  18. package/reference/packages/core/src/business/README.md +4 -1
  19. package/reference/packages/core/src/content/README.md +19 -0
  20. package/reference/packages/core/src/organization-model/README.md +148 -149
  21. package/reference/packages/core/src/organization-model/readiness/README.md +42 -0
  22. package/reference/packages/ui/src/features/README.md +28 -28
  23. package/reference/rules/active-change-index.md +40 -54
  24. package/reference/rules/agent-runtime.md +81 -0
  25. package/reference/rules/agent-start-here.md +71 -163
  26. package/reference/rules/deployment.md +33 -10
  27. package/reference/rules/error-handling.md +26 -0
  28. package/reference/rules/execution.md +13 -0
  29. package/reference/rules/frontend.md +10 -3
  30. package/reference/rules/observability.md +9 -1
  31. package/reference/rules/operations.md +26 -17
  32. package/reference/rules/organization-model.md +74 -88
  33. package/reference/rules/organization-os.md +71 -88
  34. package/reference/rules/package-taxonomy.md +11 -2
  35. package/reference/rules/platform.md +13 -7
  36. package/reference/rules/shared-types.md +36 -0
  37. package/reference/rules/task-tracking.md +30 -5
  38. package/reference/rules/ui.md +145 -3
  39. package/reference/rules/vibe-intents.md +271 -0
  40. package/reference/rules/vibe.md +17 -243
  41. package/reference/scaffold/core/organization-graph.mdx +112 -99
  42. package/reference/scaffold/core/organization-model.mdx +231 -215
  43. package/reference/scaffold/operations/propagation-pipeline.md +16 -17
  44. package/reference/scaffold/operations/scaffold-maintenance.md +22 -20
  45. package/reference/scaffold/operations/workflow-recipes.md +72 -20
  46. package/reference/scaffold/recipes/add-a-feature.md +156 -146
  47. package/reference/scaffold/recipes/add-a-resource.md +123 -117
  48. package/reference/scaffold/recipes/customize-crm-actions.md +28 -13
  49. package/reference/scaffold/recipes/customize-knowledge-browser.md +52 -117
  50. package/reference/scaffold/recipes/customize-organization-model.md +161 -149
  51. package/reference/scaffold/recipes/extend-a-base-entity.md +156 -140
  52. package/reference/scaffold/recipes/extend-content.md +265 -0
  53. package/reference/scaffold/recipes/extend-crm.md +16 -11
  54. package/reference/scaffold/recipes/extend-lead-gen.md +37 -21
  55. package/reference/scaffold/recipes/gate-by-feature-or-admin.md +160 -118
  56. package/reference/scaffold/recipes/index.md +6 -3
  57. package/reference/scaffold/recipes/query-the-knowledge-graph.md +23 -23
  58. package/reference/scaffold/reference/contracts.md +30 -56
  59. package/reference/scaffold/reference/feature-registry.md +3 -0
  60. package/reference/scaffold/reference/glossary.md +4 -4
  61. package/reference/scaffold/reference/system-interface-capabilities.md +5 -4
  62. package/reference/scaffold/ui/composition-extensibility.mdx +271 -232
  63. package/reference/scaffold/ui/customization.md +2 -2
  64. package/reference/scaffold/ui/feature-flags-and-gating.md +14 -6
  65. package/reference/scaffold/ui/feature-shell.mdx +277 -62
  66. package/reference/scaffold/ui/recipes.md +229 -197
  67. package/reference/sdk/cli-management.mdx +166 -33
  68. package/reference/sdk/cli.mdx +90 -13
  69. package/reference/sdk/concepts.mdx +2 -0
  70. package/reference/sdk/define-builders.mdx +76 -0
  71. package/reference/sdk/deployment/command-center.mdx +6 -2
  72. package/reference/sdk/deployment/execution-reference.mdx +64 -186
  73. package/reference/sdk/deployment/index.mdx +2 -0
  74. package/reference/sdk/exports.mdx +4 -4
  75. package/reference/sdk/framework/agent.mdx +52 -116
  76. package/reference/sdk/framework/index.mdx +46 -65
  77. package/reference/sdk/framework/project-structure.mdx +150 -205
  78. package/reference/sdk/framework/tutorial-system.mdx +2 -2
  79. package/reference/sdk/human-in-the-loop.mdx +152 -0
  80. package/reference/sdk/index.mdx +6 -7
  81. package/reference/sdk/platform-tools/adapters-platform.mdx +3 -1
  82. package/reference/sdk/platform-tools/index.mdx +12 -0
  83. package/reference/sdk/platform-tools/type-safety.mdx +4 -0
  84. package/reference/sdk/project-deployment-spec.mdx +131 -0
  85. package/reference/sdk/resources/index.mdx +21 -7
  86. package/reference/sdk/resources/patterns.mdx +54 -24
  87. package/reference/sdk/resources/types.mdx +7 -4
  88. package/reference/sdk/templates/data-enrichment.mdx +7 -3
  89. package/reference/sdk/templates/email-sender.mdx +139 -135
  90. package/reference/sdk/templates/lead-scorer.mdx +5 -1
  91. package/reference/sdk/templates/pdf-generator.mdx +155 -151
  92. package/reference/sdk/templates/recurring-job.mdx +195 -189
  93. package/reference/sdk/templates/text-classifier.mdx +4 -0
  94. package/reference/sdk/templates/web-scraper.mdx +139 -135
  95. package/reference/spine/spine-primer.md +135 -96
  96. package/reference/ui/exports.mdx +1 -0
  97. package/reference/ui/index.mdx +14 -7
  98. package/dist/types/worker/adapters/anymailfinder.d.ts +0 -14
  99. package/dist/types/worker/adapters/apify.d.ts +0 -14
  100. package/dist/types/worker/adapters/approval.d.ts +0 -23
  101. package/dist/types/worker/adapters/attio.d.ts +0 -22
  102. package/dist/types/worker/adapters/clickup.d.ts +0 -22
  103. package/dist/types/worker/adapters/create-adapter.d.ts +0 -41
  104. package/dist/types/worker/adapters/crm.d.ts +0 -20
  105. package/dist/types/worker/adapters/dropbox.d.ts +0 -14
  106. package/dist/types/worker/adapters/email.d.ts +0 -25
  107. package/dist/types/worker/adapters/execution.d.ts +0 -22
  108. package/dist/types/worker/adapters/gmail.d.ts +0 -14
  109. package/dist/types/worker/adapters/google-sheets.d.ts +0 -14
  110. package/dist/types/worker/adapters/index.d.ts +0 -33
  111. package/dist/types/worker/adapters/instantly.d.ts +0 -14
  112. package/dist/types/worker/adapters/lead.d.ts +0 -28
  113. package/dist/types/worker/adapters/list.d.ts +0 -9
  114. package/dist/types/worker/adapters/llm.d.ts +0 -45
  115. package/dist/types/worker/adapters/millionverifier.d.ts +0 -14
  116. package/dist/types/worker/adapters/notification.d.ts +0 -28
  117. package/dist/types/worker/adapters/pdf.d.ts +0 -22
  118. package/dist/types/worker/adapters/projects.d.ts +0 -20
  119. package/dist/types/worker/adapters/resend.d.ts +0 -14
  120. package/dist/types/worker/adapters/scheduler.d.ts +0 -25
  121. package/dist/types/worker/adapters/signature-api.d.ts +0 -14
  122. package/dist/types/worker/adapters/storage.d.ts +0 -33
  123. package/dist/types/worker/adapters/stripe.d.ts +0 -14
  124. package/dist/types/worker/adapters/tomba.d.ts +0 -14
  125. package/dist/types/worker/index.d.ts +0 -60
  126. package/dist/types/worker/platform.d.ts +0 -90
  127. package/dist/types/worker/utils.d.ts +0 -9
  128. package/reference/claude-config/Overview.md +0 -230
  129. package/reference/claude-config/hooks/post-edit-validate.mjs +0 -98
  130. package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +0 -187
  131. package/reference/claude-config/hooks/tool-failure-recovery.mjs +0 -73
  132. package/reference/claude-config/registries/graph-skills.json +0 -4
  133. package/reference/claude-config/registries/knowledge-flags.json +0 -154
  134. package/reference/claude-config/registries/skill-coverage.json +0 -20
  135. package/reference/claude-config/rules/active-change-index.md +0 -22
  136. package/reference/claude-config/rules/agent-start-here.md +0 -22
  137. package/reference/claude-config/rules/deployment.md +0 -22
  138. package/reference/claude-config/rules/error-handling.md +0 -22
  139. package/reference/claude-config/rules/execution.md +0 -22
  140. package/reference/claude-config/rules/frontend.md +0 -22
  141. package/reference/claude-config/rules/observability.md +0 -22
  142. package/reference/claude-config/rules/operations.md +0 -22
  143. package/reference/claude-config/rules/organization-model.md +0 -22
  144. package/reference/claude-config/rules/organization-os.md +0 -22
  145. package/reference/claude-config/rules/package-taxonomy.md +0 -22
  146. package/reference/claude-config/rules/platform.md +0 -22
  147. package/reference/claude-config/rules/shared-types.md +0 -22
  148. package/reference/claude-config/rules/task-tracking.md +0 -22
  149. package/reference/claude-config/rules/topbar-actions.md +0 -70
  150. package/reference/claude-config/rules/ui.md +0 -22
  151. package/reference/claude-config/rules/vibe.md +0 -22
  152. package/reference/claude-config/scripts/statusline-command.js +0 -18
  153. package/reference/claude-config/settings.json +0 -30
  154. package/reference/claude-config/skills/client/SKILL.md +0 -201
  155. package/reference/claude-config/skills/deploy/SKILL.md +0 -159
  156. package/reference/claude-config/skills/dsp/SKILL.md +0 -66
  157. package/reference/claude-config/skills/elevasis/SKILL.md +0 -251
  158. package/reference/claude-config/skills/explore/SKILL.md +0 -78
  159. package/reference/claude-config/skills/git-sync/SKILL.md +0 -166
  160. package/reference/claude-config/skills/om/SKILL.md +0 -475
  161. package/reference/claude-config/skills/om/operations/build.md +0 -237
  162. package/reference/claude-config/skills/om/operations/codify-level-a.md +0 -109
  163. package/reference/claude-config/skills/om/operations/codify-level-b.md +0 -159
  164. package/reference/claude-config/skills/om/operations/customers.md +0 -114
  165. package/reference/claude-config/skills/om/operations/features.md +0 -88
  166. package/reference/claude-config/skills/om/operations/goals.md +0 -123
  167. package/reference/claude-config/skills/om/operations/identity.md +0 -97
  168. package/reference/claude-config/skills/om/operations/labels.md +0 -110
  169. package/reference/claude-config/skills/om/operations/offerings.md +0 -114
  170. package/reference/claude-config/skills/om/operations/roles.md +0 -104
  171. package/reference/claude-config/skills/om/operations/scaffold.md +0 -163
  172. package/reference/claude-config/skills/om/operations/techStack.md +0 -38
  173. package/reference/claude-config/skills/project/SKILL.md +0 -1114
  174. package/reference/claude-config/skills/run-ui/SKILL.md +0 -73
  175. package/reference/claude-config/skills/save/SKILL.md +0 -183
  176. package/reference/claude-config/skills/setup/SKILL.md +0 -290
  177. package/reference/claude-config/skills/status/SKILL.md +0 -59
  178. package/reference/claude-config/skills/submit-request/SKILL.md +0 -180
  179. package/reference/claude-config/skills/sync/SKILL.md +0 -47
  180. package/reference/claude-config/skills/tutorial/SKILL.md +0 -259
  181. package/reference/claude-config/skills/tutorial/progress-template.md +0 -74
  182. package/reference/claude-config/skills/tutorial/technical.md +0 -1303
  183. package/reference/claude-config/skills/tutorial/vibe-coder.md +0 -890
  184. package/reference/claude-config/sync-notes/2026-04-22-git-sync-and-sync-notes.md +0 -27
  185. package/reference/claude-config/sync-notes/2026-04-22-lead-gen-deliverability-removal.md +0 -30
  186. package/reference/claude-config/sync-notes/2026-04-24-test-utils-and-template-tests.md +0 -73
  187. package/reference/claude-config/sync-notes/2026-04-24-ui-consolidation-and-sdk-cli-train.md +0 -86
  188. package/reference/claude-config/sync-notes/2026-04-25-auth-role-system-and-settings-roles.md +0 -55
  189. package/reference/claude-config/sync-notes/2026-04-27-crm-hitl-action-layer-cutover.md +0 -97
  190. package/reference/claude-config/sync-notes/2026-04-27-lead-gen-substrate-train.md +0 -112
  191. package/reference/claude-config/sync-notes/2026-04-29-crm-state-and-lead-gen-processing-status.md +0 -93
  192. package/reference/claude-config/sync-notes/2026-05-02-crm-ownership-next-action.md +0 -58
  193. package/reference/claude-config/sync-notes/2026-05-02-template-hardcode-workos-config.md +0 -56
  194. package/reference/claude-config/sync-notes/2026-05-04-elevasis-workspace.md +0 -71
  195. package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +0 -83
  196. package/reference/claude-config/sync-notes/2026-05-04-template-skills-run-ui-and-tutorial.md +0 -59
  197. package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +0 -42
  198. package/reference/claude-config/sync-notes/2026-05-06-crm-spine.md +0 -60
  199. package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +0 -37
  200. package/reference/claude-config/sync-notes/2026-05-07-sdk-changes-release-train.md +0 -34
  201. package/reference/claude-config/sync-notes/2026-05-08-resource-governance-scaffold-guidance.md +0 -38
  202. package/reference/claude-config/sync-notes/2026-05-09-clients-domain.md +0 -32
  203. package/reference/claude-config/sync-notes/2026-05-09-command-system.md +0 -33
  204. package/reference/claude-config/sync-notes/2026-05-09-resource-governance-and-misc.md +0 -69
  205. package/reference/claude-config/sync-notes/2026-05-12-sdk-ready-release-train.md +0 -30
  206. package/reference/claude-config/sync-notes/2026-05-14-organization-model-ontology-refactor.md +0 -45
  207. package/reference/claude-config/sync-notes/2026-05-15-om-skill-rename-and-write-family.md +0 -52
  208. package/reference/claude-config/sync-notes/2026-05-17-sdk-boundary-consolidation.md +0 -33
  209. package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +0 -32
  210. package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +0 -43
  211. package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +0 -40
  212. package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +0 -61
  213. package/reference/claude-config/sync-notes/2026-05-23-branding-names-to-identity.md +0 -49
  214. package/reference/claude-config/sync-notes/2026-05-23-lead-gen-manage-access.md +0 -31
  215. package/reference/claude-config/sync-notes/2026-05-23-om-deployment-drift-detection.md +0 -42
  216. package/reference/claude-config/sync-notes/2026-05-23-om-full-model-deploy-contract.md +0 -33
  217. package/reference/claude-config/sync-notes/2026-05-23-ui-sdk-package-fixes.md +0 -37
  218. package/reference/claude-config/sync-notes/2026-05-24-platform-invite-router-core-baseline.md +0 -28
  219. package/reference/claude-config/sync-notes/2026-05-24-system-interface-readiness.md +0 -43
  220. package/reference/claude-config/sync-notes/2026-05-25-invitation-login-loader.md +0 -26
  221. package/reference/claude-config/sync-notes/2026-05-25-om-topbar-requests.md +0 -33
  222. package/reference/claude-config/sync-notes/2026-05-25-system-interface-profile-registry-and-substrate.md +0 -35
  223. package/reference/claude-config/sync-notes/2026-05-25-tenant-om-scaffold-cli.md +0 -49
  224. package/reference/claude-config/sync-notes/2026-05-25-vibe-operate-intent.md +0 -47
  225. package/reference/claude-config/sync-notes/2026-05-28-om-snapshot-sdk-workflow-config.md +0 -33
  226. package/reference/claude-config/sync-notes/2026-05-30-client-source-and-om-profiles.md +0 -39
  227. package/reference/claude-config/sync-notes/2026-06-02-knowledge-nested-group-routing.md +0 -27
  228. package/reference/claude-config/sync-notes/2026-06-02-nest-projects-under-platform.md +0 -45
  229. package/reference/claude-config/sync-notes/2026-06-03-skill-autogen-and-client-skill.md +0 -34
  230. package/reference/claude-config/sync-notes/2026-06-04-scaffold-registry-lane-severity.md +0 -34
  231. package/reference/claude-config/sync-notes/2026-06-05-appearance-app-mode-decouple.md +0 -29
  232. package/reference/claude-config/sync-notes/2026-06-05-ontology-endpoint-rename-and-knowledge-browser-ui.md +0 -86
  233. package/reference/claude-config/sync-notes/2026-06-06-om-build-systems-scaffold.md +0 -47
  234. package/reference/claude-config/sync-notes/2026-06-06-om-item-copy-references.md +0 -50
  235. package/reference/claude-config/sync-notes/2026-06-08-knowledge-base-page-not-found-fix.md +0 -76
  236. package/reference/claude-config/sync-notes/2026-06-09-agent-sessions-public-agent-chat-route.md +0 -75
  237. package/reference/claude-config/sync-notes/2026-06-09-sdk-cli-load-org-model-resolution.md +0 -42
  238. package/reference/claude-config/sync-notes/2026-06-12-agent-grants-visualizer-operations.md +0 -30
  239. package/reference/claude-config/sync-notes/2026-06-14-session-ux-and-project-cli-json.md +0 -33
  240. package/reference/claude-config/sync-notes/2026-06-14-shared-session-conversation-view.md +0 -26
  241. package/reference/claude-config/sync-notes/2026-06-15-session-chat-zero-wiring.md +0 -46
  242. package/reference/claude-config/sync-notes/2026-06-17-agent-session-ux-features.md +0 -34
  243. package/reference/claude-config/sync-notes/2026-06-25-shared-page-scroll-contract-guard.md +0 -52
  244. package/reference/claude-config/sync-notes/2026-06-26-leadgen-overview-om-telemetry.md +0 -47
  245. package/reference/claude-config/sync-notes/2026-07-21-agent-scaffold-hardening.md +0 -75
  246. package/reference/claude-config/sync-notes/2026-07-23-agent-session-memory.md +0 -49
  247. package/reference/claude-config/sync-notes/2026-07-23-workos-org-marker.md +0 -50
  248. package/reference/claude-config/sync-notes/2026-07-24-claude-5-models-and-session-surface-fixes.md +0 -116
  249. package/reference/claude-config/sync-notes/2026-07-27-agent-strict-output-and-turn-drift.md +0 -73
  250. package/reference/claude-config/sync-notes/2026-07-28-agent-reply-is-its-own-field.md +0 -84
  251. package/reference/claude-config/sync-notes/2026-07-30-login-screen-and-member-provisioning-state.md +0 -114
  252. package/reference/claude-config/sync-notes/2026-08-02-auth-guard-defaults-and-truncation-fix.md +0 -122
  253. package/reference/claude-config/sync-notes/2026-08-03-agent-prose-escape-normalization.md +0 -88
  254. package/reference/claude-config/sync-notes/2026-08-03-cli-gateway-errors-and-request-timeout.md +0 -120
  255. package/reference/claude-config/sync-notes/README.md +0 -43
  256. package/reference/sdk/framework/interaction-guidance.mdx +0 -182
  257. package/reference/sdk/framework/memory.mdx +0 -326
  258. package/reference/sdk/framework/resource-documentation.mdx +0 -90
  259. package/reference/sdk/roadmap.mdx +0 -164
@@ -2465,6 +2465,23 @@ var Workflow = class {
2465
2465
 
2466
2466
  // ../core/src/execution/engine/agent/observability/logging.ts
2467
2467
  function createAgentLogger(logger, agentId, sessionId) {
2468
+ function emitAction(actionType, message, iteration, startTime, endTime, duration) {
2469
+ const event = {
2470
+ type: "agent",
2471
+ agentId,
2472
+ lifecycle: "iteration",
2473
+ eventType: "action",
2474
+ iteration,
2475
+ actionType,
2476
+ startTime,
2477
+ endTime,
2478
+ duration,
2479
+ data: { message },
2480
+ ...sessionId && { sessionId }
2481
+ // Include sessionId if present
2482
+ };
2483
+ logger.info("action", event);
2484
+ }
2468
2485
  return {
2469
2486
  lifecycle(lifecycle, stage, data) {
2470
2487
  let event;
@@ -2531,21 +2548,15 @@ function createAgentLogger(logger, agentId, sessionId) {
2531
2548
  logger.info("reasoning", event);
2532
2549
  },
2533
2550
  action(actionType, message, iteration, startTime, endTime, duration) {
2534
- const event = {
2535
- type: "agent",
2536
- agentId,
2537
- lifecycle: "iteration",
2538
- eventType: "action",
2539
- iteration,
2540
- actionType,
2541
- startTime,
2542
- endTime,
2543
- duration,
2544
- data: { message },
2545
- ...sessionId && { sessionId }
2546
- // Include sessionId if present
2547
- };
2548
- logger.info("action", event);
2551
+ emitAction(actionType, message, iteration, startTime, endTime, duration);
2552
+ },
2553
+ async timed(actionType, iteration, work, message) {
2554
+ const startTime = Date.now();
2555
+ const result = await work();
2556
+ const endTime = Date.now();
2557
+ const resolvedActionType = typeof actionType === "function" ? actionType(result) : actionType;
2558
+ emitAction(resolvedActionType, message(result), iteration, startTime, endTime, endTime - startTime);
2559
+ return result;
2549
2560
  },
2550
2561
  toolCall(toolName, iteration, startTime, endTime, duration, success, error, input, output) {
2551
2562
  const event = {
@@ -3047,8 +3058,8 @@ function preview(text, n = 120) {
3047
3058
  // ../core/src/platform/utils/token-counter.ts
3048
3059
  var CHARS_PER_TOKEN = 3.5;
3049
3060
  function estimateTokens(text) {
3050
- const content = typeof text === "string" ? text : JSON.stringify(text);
3051
- const chars = content.length;
3061
+ const content2 = typeof text === "string" ? text : JSON.stringify(text);
3062
+ const chars = content2.length;
3052
3063
  return Math.ceil(chars / CHARS_PER_TOKEN);
3053
3064
  }
3054
3065
  function truncationCharBudget(maxTokens, noticeLength = 0) {
@@ -3088,7 +3099,7 @@ function buildUntrustedDataPolicy(securityLevel) {
3088
3099
  }
3089
3100
  function buildAgentMessages(systemPrompt, memory, currentInput, securityLevel, conversationHistory = []) {
3090
3101
  const policy = buildUntrustedDataPolicy(securityLevel);
3091
- const historyMessages = conversationHistory.map(({ role, content }) => ({ role, content }));
3102
+ const historyMessages = conversationHistory.map(({ role, content: content2 }) => ({ role, content: content2 }));
3092
3103
  if (historyMessages.length > 0) {
3093
3104
  historyMessages[historyMessages.length - 1].cacheBreakpoint = true;
3094
3105
  }
@@ -3443,66 +3454,21 @@ async function processReasoning(iterationContext) {
3443
3454
  reasoning: response.reasoning
3444
3455
  });
3445
3456
  iterationContext.logger.reasoning(response.reasoning, iterationContext.iteration, startTime, endTime, duration);
3446
- const memoryStartTime = Date.now();
3447
- iterationContext.memoryManager.addToHistory({
3448
- type: "reasoning",
3449
- content: response.reasoning,
3450
- turnNumber: iterationContext.executionContext.sessionTurnNumber ?? null,
3451
- iterationNumber: iterationContext.iteration,
3452
- source: "model"
3453
- });
3454
- const memoryEndTime = Date.now();
3455
- const memoryDuration = memoryEndTime - memoryStartTime;
3456
- iterationContext.logger.action(
3457
+ await iterationContext.logger.timed(
3457
3458
  "memory-reasoning",
3458
- `Stored reasoning (${response.reasoning.length} chars), history size: ${iterationContext.memoryManager.getHistoryLength()}, actions: ${response.nextActions.map((a) => a.type).join(", ")}`,
3459
3459
  iterationContext.iteration,
3460
- memoryStartTime,
3461
- memoryEndTime,
3462
- memoryDuration
3460
+ () => iterationContext.memoryManager.addToHistory({
3461
+ type: "reasoning",
3462
+ content: response.reasoning,
3463
+ turnNumber: iterationContext.executionContext.sessionTurnNumber ?? null,
3464
+ iterationNumber: iterationContext.iteration,
3465
+ source: "model"
3466
+ }),
3467
+ () => `Stored reasoning (${response.reasoning.length} chars), history size: ${iterationContext.memoryManager.getHistoryLength()}, actions: ${response.nextActions.map((a) => a.type).join(", ")}`
3463
3468
  );
3464
3469
  return response;
3465
3470
  }
3466
3471
 
3467
- // ../core/src/execution/engine/agent/memory/domains.ts
3468
- var MEMORY_DOMAINS = {
3469
- /**
3470
- * Tool-owned keys
3471
- * Updated automatically by tools as side effects
3472
- * LLM cannot modify these via memoryOps
3473
- *
3474
- * Tools manage complex structured data (caches, indexes, etc.)
3475
- * that would be error-prone for LLM to update via JSON strings.
3476
- *
3477
- * No tool currently writes these three keys, so in practice the guard reserves the names
3478
- * against the LLM rather than arbitrating a live conflict. That is still enforcement --
3479
- * see `validateMemoryKeyOwnership` in `./utils` -- not dead code.
3480
- */
3481
- TOOL_OWNED: [
3482
- "notion-pages-cache",
3483
- // Notion tools manage page hierarchy
3484
- "github-repo-cache",
3485
- // GitHub tools manage repository structure
3486
- "slack-channel-cache"
3487
- // Slack tools manage channel data
3488
- ]
3489
- /**
3490
- * LLM-owned keys
3491
- * All keys NOT in TOOL_OWNED
3492
- * Managed via memoryOps by agent reasoning
3493
- *
3494
- * LLM manages semantic memory (business context, decisions, etc.)
3495
- * that requires understanding and judgment.
3496
- */
3497
- };
3498
- function isToolOwnedKey(key) {
3499
- return MEMORY_DOMAINS.TOOL_OWNED.includes(key);
3500
- }
3501
- function getKeyOwner(key) {
3502
- if (isToolOwnedKey(key)) return "tool";
3503
- return "llm";
3504
- }
3505
-
3506
3472
  // ../core/src/execution/engine/agent/memory/utils.ts
3507
3473
  function addToolError(memoryManager, action, errorMessage, iteration, turnNumber = null, metadata) {
3508
3474
  memoryManager.addToHistory({
@@ -3526,11 +3492,10 @@ function addToolError(memoryManager, action, errorMessage, iteration, turnNumber
3526
3492
  });
3527
3493
  }
3528
3494
  function validateMemoryKeyOwnership(key, logger, iteration) {
3529
- if (isToolOwnedKey(key)) {
3530
- const owner = getKeyOwner(key);
3495
+ if (key.startsWith("_")) {
3531
3496
  logger.action(
3532
3497
  "memory-set-rejected",
3533
- `Rejected LLM update to ${owner}-managed key: ${key}`,
3498
+ `Rejected LLM update to framework-reserved key: ${key}`,
3534
3499
  iteration,
3535
3500
  Date.now(),
3536
3501
  Date.now(),
@@ -3648,11 +3613,11 @@ function safeStructuralPrefix(raw, cutAt) {
3648
3613
  const base = stripDanglingTail(raw.slice(0, cutPoint), stack[stack.length - 1] === "}");
3649
3614
  return base + [...stack].reverse().join("");
3650
3615
  }
3651
- function truncateContent(content, maxTokens) {
3652
- const estimated = estimateTokens(content);
3653
- if (estimated <= maxTokens) return { content };
3616
+ function truncateContent(content2, maxTokens) {
3617
+ const estimated = estimateTokens(content2);
3618
+ if (estimated <= maxTokens) return { content: content2 };
3654
3619
  const cutAt = truncationCharBudget(maxTokens, CLOSING_BRACKET_RESERVE);
3655
- const safeContent = safeStructuralPrefix(content, cutAt);
3620
+ const safeContent = safeStructuralPrefix(content2, cutAt);
3656
3621
  const omittedTokens = estimated - maxTokens;
3657
3622
  return { content: safeContent, truncated: { omittedTokens } };
3658
3623
  }
@@ -3748,9 +3713,9 @@ async function executeToolCall(iterationContext, action) {
3748
3713
  const validatedResult = tool.outputSchema.parse(rawResult);
3749
3714
  let boundedResult = validatedResult;
3750
3715
  if (tool.maxOutputTokens !== void 0) {
3751
- const { content, truncated } = truncateContent(JSON.stringify(validatedResult), tool.maxOutputTokens);
3716
+ const { content: content2, truncated } = truncateContent(JSON.stringify(validatedResult), tool.maxOutputTokens);
3752
3717
  if (truncated) {
3753
- boundedResult = content;
3718
+ boundedResult = content2;
3754
3719
  }
3755
3720
  }
3756
3721
  const toolEndTime = Date.now();
@@ -3772,25 +3737,19 @@ async function executeToolCall(iterationContext, action) {
3772
3737
  action.input,
3773
3738
  boundedResult
3774
3739
  );
3775
- const memoryStartTime = Date.now();
3776
3740
  const memoryContent = typeof boundedResult === "string" ? boundedResult : JSON.stringify(boundedResult);
3777
- iterationContext.memoryManager.addToHistory({
3778
- type: "tool-result",
3779
- content: memoryContent,
3780
- toolName: action.name,
3781
- turnNumber: iterationContext.executionContext.sessionTurnNumber ?? null,
3782
- iterationNumber: iterationContext.iteration,
3783
- source: "tool"
3784
- });
3785
- const memoryEndTime = Date.now();
3786
- const memoryDuration = memoryEndTime - memoryStartTime;
3787
- iterationContext.logger.action(
3741
+ await iterationContext.logger.timed(
3788
3742
  "memory-tool-result",
3789
- `Stored tool-result for ${action.name} (${memoryContent.length} chars), history size: ${iterationContext.memoryManager.getHistoryLength()}`,
3790
3743
  iterationContext.iteration,
3791
- memoryStartTime,
3792
- memoryEndTime,
3793
- memoryDuration
3744
+ () => iterationContext.memoryManager.addToHistory({
3745
+ type: "tool-result",
3746
+ content: memoryContent,
3747
+ toolName: action.name,
3748
+ turnNumber: iterationContext.executionContext.sessionTurnNumber ?? null,
3749
+ iterationNumber: iterationContext.iteration,
3750
+ source: "tool"
3751
+ }),
3752
+ () => `Stored tool-result for ${action.name} (${memoryContent.length} chars), history size: ${iterationContext.memoryManager.getHistoryLength()}`
3794
3753
  );
3795
3754
  } catch (error) {
3796
3755
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -3813,29 +3772,25 @@ async function executeToolCall(iterationContext, action) {
3813
3772
  action.input,
3814
3773
  void 0
3815
3774
  );
3816
- const memoryStartTime = Date.now();
3817
- const metadata = error instanceof ToolingError ? {
3818
- errorType: error.errorType,
3819
- severity: error.severity,
3820
- isRetryable: error.isRetryable()
3821
- } : void 0;
3822
- addToolError(
3823
- iterationContext.memoryManager,
3824
- action,
3825
- errorMessage,
3826
- iterationContext.iteration,
3827
- iterationContext.executionContext.sessionTurnNumber ?? null,
3828
- metadata
3829
- );
3830
- const memoryEndTime = Date.now();
3831
- const memoryDuration = memoryEndTime - memoryStartTime;
3832
- iterationContext.logger.action(
3775
+ await iterationContext.logger.timed(
3833
3776
  "memory-tool-error",
3834
- `Stored error for ${action.name}: ${errorMessage}, history size: ${iterationContext.memoryManager.getHistoryLength()}`,
3835
3777
  iterationContext.iteration,
3836
- memoryStartTime,
3837
- memoryEndTime,
3838
- memoryDuration
3778
+ () => {
3779
+ const metadata = error instanceof ToolingError ? {
3780
+ errorType: error.errorType,
3781
+ severity: error.severity,
3782
+ isRetryable: error.isRetryable()
3783
+ } : void 0;
3784
+ addToolError(
3785
+ iterationContext.memoryManager,
3786
+ action,
3787
+ errorMessage,
3788
+ iterationContext.iteration,
3789
+ iterationContext.executionContext.sessionTurnNumber ?? null,
3790
+ metadata
3791
+ );
3792
+ },
3793
+ () => `Stored error for ${action.name}: ${errorMessage}, history size: ${iterationContext.memoryManager.getHistoryLength()}`
3839
3794
  );
3840
3795
  }
3841
3796
  }
@@ -4069,15 +4024,17 @@ async function processMemory(memoryManager, response, logger, iteration) {
4069
4024
  if (!response.memoryOps) return;
4070
4025
  const { memoryOps } = response;
4071
4026
  if (memoryOps.set) {
4072
- for (const [key, content] of Object.entries(memoryOps.set)) {
4027
+ for (const [key, content2] of Object.entries(memoryOps.set)) {
4073
4028
  if (!validateMemoryKeyOwnership(key, logger, iteration)) {
4074
4029
  continue;
4075
4030
  }
4076
- const startTime = Date.now();
4077
- const stringValue = typeof content === "string" ? content : JSON.stringify(content);
4078
- memoryManager.set(key, stringValue);
4079
- const endTime = Date.now();
4080
- logger.action("memory-set", `Set: ${key}`, iteration, startTime, endTime, endTime - startTime);
4031
+ await logger.timed(
4032
+ "memory-set",
4033
+ iteration,
4034
+ // Auto-stringify non-string values (arrays, objects, etc.)
4035
+ () => memoryManager.set(key, typeof content2 === "string" ? content2 : JSON.stringify(content2)),
4036
+ () => `Set: ${key}`
4037
+ );
4081
4038
  }
4082
4039
  }
4083
4040
  if (memoryOps.delete) {
@@ -4085,21 +4042,12 @@ async function processMemory(memoryManager, response, logger, iteration) {
4085
4042
  if (!validateMemoryKeyOwnership(key, logger, iteration)) {
4086
4043
  continue;
4087
4044
  }
4088
- const startTime = Date.now();
4089
- const deleted = memoryManager.delete(key);
4090
- const endTime = Date.now();
4091
- if (deleted) {
4092
- logger.action("memory-delete", `Deleted: ${key}`, iteration, startTime, endTime, endTime - startTime);
4093
- } else {
4094
- logger.action(
4095
- "memory-delete-missing",
4096
- `Attempted to delete non-existent key: ${key}`,
4097
- iteration,
4098
- startTime,
4099
- endTime,
4100
- endTime - startTime
4101
- );
4102
- }
4045
+ await logger.timed(
4046
+ (deleted) => deleted ? "memory-delete" : "memory-delete-missing",
4047
+ iteration,
4048
+ () => memoryManager.delete(key),
4049
+ (deleted) => deleted ? `Deleted: ${key}` : `Attempted to delete non-existent key: ${key}`
4050
+ );
4103
4051
  }
4104
4052
  }
4105
4053
  }
@@ -4204,13 +4152,13 @@ var MAX_TOOL_RESULT_TOKENS = 4e3;
4204
4152
 
4205
4153
  // ../core/src/execution/engine/agent/memory/manager.ts
4206
4154
  var ENVELOPE_FULL_RESULT_WINDOW = 3;
4207
- function parseIfJson(content) {
4208
- const trimmed = content.trim();
4209
- if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return content;
4155
+ function parseIfJson(content2) {
4156
+ const trimmed = content2.trim();
4157
+ if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return content2;
4210
4158
  try {
4211
- return JSON.parse(content);
4159
+ return JSON.parse(content2);
4212
4160
  } catch {
4213
- return content;
4161
+ return content2;
4214
4162
  }
4215
4163
  }
4216
4164
  function isInTurnScope(entry, currentTurn) {
@@ -4226,7 +4174,6 @@ var MemoryManager = class {
4226
4174
  this.constraints = constraints;
4227
4175
  this.logger = logger;
4228
4176
  }
4229
- cachedSnapshot;
4230
4177
  /**
4231
4178
  * Rolling correction for `estimateTokens`'s bias, learned from real provider usage.
4232
4179
  * `undefined` until the first `recordActualUsage` call -- the cold-start state, where
@@ -4274,8 +4221,8 @@ var MemoryManager = class {
4274
4221
  * @param key - Session memory key
4275
4222
  * @param content - String content from agent
4276
4223
  */
4277
- set(key, content, source = "model") {
4278
- const entryTokens = estimateTokens(content);
4224
+ set(key, content2, source = "model") {
4225
+ const entryTokens = estimateTokens(content2);
4279
4226
  let truncated;
4280
4227
  if (entryTokens > MAX_SINGLE_ENTRY_TOKENS) {
4281
4228
  const truncateTime = Date.now();
@@ -4287,13 +4234,13 @@ var MemoryManager = class {
4287
4234
  truncateTime,
4288
4235
  0
4289
4236
  );
4290
- const result = truncateContent(content, MAX_SINGLE_ENTRY_TOKENS);
4291
- content = result.content;
4237
+ const result = truncateContent(content2, MAX_SINGLE_ENTRY_TOKENS);
4238
+ content2 = result.content;
4292
4239
  truncated = result.truncated;
4293
4240
  }
4294
4241
  this.memory.sessionMemory[key] = {
4295
4242
  type: "context",
4296
- content,
4243
+ content: content2,
4297
4244
  timestamp: Date.now(),
4298
4245
  turnNumber: null,
4299
4246
  // Session memory entries are not turn-specific
@@ -4303,7 +4250,7 @@ var MemoryManager = class {
4303
4250
  ...truncated && { truncated },
4304
4251
  // Screened once, here, instead of by re-scanning the whole envelope on every iteration this
4305
4252
  // key gets re-sent for — see `MemoryEntry.warnings`.
4306
- warnings: sanitizeUserInput(content).warnings
4253
+ warnings: sanitizeUserInput(content2).warnings
4307
4254
  };
4308
4255
  }
4309
4256
  /**
@@ -4341,14 +4288,14 @@ var MemoryManager = class {
4341
4288
  iterationNumber: entry.iterationNumber
4342
4289
  });
4343
4290
  }
4344
- let content = entry.content;
4291
+ let content2 = entry.content;
4345
4292
  let truncated;
4346
4293
  if (entry.type === "tool-result" || entry.type === "error") {
4347
- const before = content;
4348
- const result = truncateContent(content, MAX_TOOL_RESULT_TOKENS);
4349
- content = result.content;
4294
+ const before = content2;
4295
+ const result = truncateContent(content2, MAX_TOOL_RESULT_TOKENS);
4296
+ content2 = result.content;
4350
4297
  truncated = result.truncated;
4351
- if (content !== before) {
4298
+ if (content2 !== before) {
4352
4299
  const truncateTime = Date.now();
4353
4300
  this.logger?.action(
4354
4301
  "memory-tool-result-truncate",
@@ -4362,12 +4309,12 @@ var MemoryManager = class {
4362
4309
  }
4363
4310
  this.memory.history.push({
4364
4311
  ...entry,
4365
- content,
4312
+ content: content2,
4366
4313
  timestamp: Date.now(),
4367
4314
  ...truncated && { truncated },
4368
4315
  // Screened once, here, instead of by re-scanning the whole accumulated envelope on every
4369
4316
  // iteration this entry gets re-sent for — see `MemoryEntry.warnings`.
4370
- warnings: sanitizeUserInput(content).warnings
4317
+ warnings: sanitizeUserInput(content2).warnings
4371
4318
  });
4372
4319
  this.autoCompact();
4373
4320
  }
@@ -4515,21 +4462,15 @@ var MemoryManager = class {
4515
4462
  };
4516
4463
  }
4517
4464
  /**
4518
- * Create memory snapshot for persistence
4519
- * Caches snapshot internally for later retrieval
4465
+ * Create a memory snapshot for persistence.
4466
+ *
4467
+ * Stateless: every call returns a fresh `structuredClone` of the current memory, so the caller
4468
+ * owns caching if it needs to hold onto the result across calls (see `Agent.memorySnapshot`).
4469
+ *
4520
4470
  * @returns Deep copy of current memory state
4521
4471
  */
4522
- toSnapshot() {
4523
- this.cachedSnapshot = structuredClone(this.memory);
4524
- return this.cachedSnapshot;
4525
- }
4526
- /**
4527
- * Get cached memory snapshot
4528
- * Returns snapshot created by toSnapshot()
4529
- * @returns Cached snapshot (undefined if toSnapshot() not called yet)
4530
- */
4531
- getSnapshot() {
4532
- return this.cachedSnapshot;
4472
+ snapshot() {
4473
+ return structuredClone(this.memory);
4533
4474
  }
4534
4475
  /**
4535
4476
  * Build the framework framing and the untrusted data envelope for an LLM call.
@@ -4661,6 +4602,12 @@ var Agent = class {
4661
4602
  * reading memory history after the fact, because the emit is the user-visible event and memory
4662
4603
  * can be compacted or restructured without changing whether the turn spoke. */
4663
4604
  spokeThisTurn = false;
4605
+ /** Cached result of `memoryManager.snapshot()` -- `MemoryManager.snapshot()` itself is stateless
4606
+ * (a fresh `structuredClone` every call), so caching the LAST one taken is this class's job. Set
4607
+ * once, in the `finally` around `iterate()` and again in `complete()` -- see `getMemorySnapshot()`
4608
+ * for why `undefined`-before-first-iteration is a contract other callers (`session.ts`, the SDK
4609
+ * worker) depend on. */
4610
+ memorySnapshot;
4664
4611
  /**
4665
4612
  * Create a new agent instance from definition
4666
4613
  * Memory will be initialized during execution
@@ -4701,7 +4648,7 @@ var Agent = class {
4701
4648
  try {
4702
4649
  await this.iterate(this.executionContext);
4703
4650
  } finally {
4704
- this.memoryManager.toSnapshot();
4651
+ this.memorySnapshot = this.memoryManager.snapshot();
4705
4652
  }
4706
4653
  }
4707
4654
  const output = await this.complete();
@@ -4814,22 +4761,21 @@ var Agent = class {
4814
4761
  async initializeMemoryManager(context) {
4815
4762
  const memory = await this.resolveInitialMemory(context);
4816
4763
  const memoryManager = new MemoryManager(memory, this.config.constraints, this.logger);
4817
- const inputStartTime = Date.now();
4818
- memoryManager.addToHistory({
4819
- type: "input",
4820
- content: this.currentInput,
4821
- turnNumber: context.sessionTurnNumber ?? null,
4822
- iterationNumber: 0,
4823
- source: "user"
4824
- });
4825
- const inputEndTime = Date.now();
4826
- this.logger.action(
4764
+ await this.logger.timed(
4827
4765
  "memory-input",
4828
- `Added input entry to history`,
4829
4766
  0,
4830
- inputStartTime,
4831
- inputEndTime,
4832
- inputEndTime - inputStartTime
4767
+ // Kept in history even though the input also travels as its own message: history is what
4768
+ // later iterations and later turns read, and `autoCompact` anchors on `history[0]` as the
4769
+ // original input. `toContextParts` excludes this entry from the current turn's envelope so
4770
+ // the model does not see the same text twice.
4771
+ () => memoryManager.addToHistory({
4772
+ type: "input",
4773
+ content: this.currentInput,
4774
+ turnNumber: context.sessionTurnNumber ?? null,
4775
+ iterationNumber: 0,
4776
+ source: "user"
4777
+ }),
4778
+ () => `Added input entry to history`
4833
4779
  );
4834
4780
  flowLog("agent.initialize", {
4835
4781
  resourceId: this.config.resourceId,
@@ -4851,32 +4797,20 @@ var Agent = class {
4851
4797
  */
4852
4798
  async resolveInitialMemory(context) {
4853
4799
  if (this.initialMemory) {
4854
- const restoreStartTime = Date.now();
4855
- const memory = structuredClone(this.initialMemory);
4856
- const restoreEndTime = Date.now();
4857
- this.logger.action(
4800
+ return this.logger.timed(
4858
4801
  "memory-restore",
4859
- `Restored ${Object.keys(memory.sessionMemory).length} session memory entries`,
4860
4802
  0,
4861
- restoreStartTime,
4862
- restoreEndTime,
4863
- restoreEndTime - restoreStartTime
4803
+ () => structuredClone(this.initialMemory),
4804
+ (memory) => `Restored ${Object.keys(memory.sessionMemory).length} session memory entries`
4864
4805
  );
4865
- return memory;
4866
4806
  }
4867
4807
  if (this.definition.preloadMemory) {
4868
- const preloadStartTime = Date.now();
4869
- const memory = await this.definition.preloadMemory(context);
4870
- const preloadEndTime = Date.now();
4871
- this.logger.action(
4808
+ return this.logger.timed(
4872
4809
  "memory-preload",
4873
- `Preloaded ${Object.keys(memory.sessionMemory).length} session memory entries`,
4874
4810
  0,
4875
- preloadStartTime,
4876
- preloadEndTime,
4877
- preloadEndTime - preloadStartTime
4811
+ () => this.definition.preloadMemory(context),
4812
+ (memory) => `Preloaded ${Object.keys(memory.sessionMemory).length} session memory entries`
4878
4813
  );
4879
- return memory;
4880
4814
  }
4881
4815
  return { sessionMemory: {}, history: [] };
4882
4816
  }
@@ -5010,8 +4944,8 @@ var Agent = class {
5010
4944
  0
5011
4945
  );
5012
4946
  }
5013
- this.memoryManager.toSnapshot();
5014
- const snapshot = this.memoryManager.getSnapshot();
4947
+ const snapshot = this.memoryManager.snapshot();
4948
+ this.memorySnapshot = snapshot;
5015
4949
  const completionEndTime = Date.now();
5016
4950
  this.logger.lifecycle("completion", "completed", {
5017
4951
  startTime: completionStartTime,
@@ -5227,12 +5161,17 @@ Fix the errors and generate a valid output.
5227
5161
  `.trim();
5228
5162
  }
5229
5163
  /**
5230
- * Get memory snapshot after execution
5231
- * Delegates to MemoryManager.getSnapshot()
5232
- * @returns Memory snapshot (only available after execute() completes)
5164
+ * Get memory snapshot after execution.
5165
+ *
5166
+ * `undefined` until the `finally` around `iterate()` (or `complete()`) takes the first snapshot --
5167
+ * `session.ts` and the SDK worker both rely on this to distinguish "no memory produced yet" (a
5168
+ * throw during `initialize()`, before any iteration ran) from "memory exists".
5169
+ *
5170
+ * @returns Memory snapshot (only available after execute() completes, or after a mid-turn throw
5171
+ * past the point `iterate()` began)
5233
5172
  */
5234
5173
  getMemorySnapshot() {
5235
- return this.memoryManager.getSnapshot();
5174
+ return this.memorySnapshot;
5236
5175
  }
5237
5176
  /**
5238
5177
  * How the just-finished turn ended -- see `AgentStopReason`. Set once `iterate()` returns,
@@ -6184,28 +6123,42 @@ z.object({
6184
6123
  limit: z.number().int(),
6185
6124
  offset: z.number().int()
6186
6125
  });
6187
- var AcqArtifactOwnerKindSchema = z.enum(["company", "contact", "deal", "list", "list_member"]);
6126
+ var AcqArtifactOwnerKindSchema = z.enum(["company", "contact", "deal", "list", "list_member", "organization"]);
6188
6127
  z.object({
6189
6128
  ownerKind: AcqArtifactOwnerKindSchema,
6190
- ownerId: UuidSchema
6129
+ ownerId: UuidSchema.optional()
6191
6130
  }).strict();
6131
+ var PipelineIdSchema = z.string().trim().min(1).max(255);
6192
6132
  z.object({
6193
6133
  ownerKind: AcqArtifactOwnerKindSchema,
6194
- ownerId: UuidSchema,
6134
+ // Nullable + optional: an org-owned artifact (ownerKind: 'organization') has no
6135
+ // single owning entity row. See the comment on AcqArtifactOwnerKindSchema above.
6136
+ ownerId: UuidSchema.nullable().optional(),
6195
6137
  kind: z.string().trim().min(1).max(255),
6196
6138
  content: z.record(z.string(), z.unknown()),
6197
- sourceExecutionId: UuidSchema.optional()
6139
+ sourceExecutionId: UuidSchema.optional(),
6140
+ // Nullable + optional: acquisition's own artifacts (audits, proposals, ICP docs) predate the
6141
+ // pipeline concept and have none. `getActiveArtifact` filters on it, so any artifact meant to
6142
+ // be resolvable as "the active document for pipeline X" MUST supply it -- artifacts-platform-tool
6143
+ // .mdx Step 3 defect 1.
6144
+ pipelineId: PipelineIdSchema.nullable().optional()
6198
6145
  }).strict();
6199
6146
  var AcqArtifactResponseSchema = z.object({
6200
6147
  id: z.string(),
6201
6148
  organizationId: z.string(),
6202
6149
  ownerKind: z.string(),
6203
- ownerId: z.string(),
6150
+ // Nullable as of content-pipeline-foundation D14: an org-owned artifact has no owning entity row.
6151
+ // CreateArtifactRequestSchema already accepted a null ownerId; this response schema not doing so
6152
+ // was Step 3 defect 2 -- an org-owned artifact inserted fine and then failed serialization.
6153
+ ownerId: z.string().nullable(),
6204
6154
  kind: z.string(),
6155
+ pipelineId: z.string().nullable(),
6205
6156
  content: z.record(z.string(), z.unknown()),
6206
6157
  sourceExecutionId: z.string().nullable(),
6207
6158
  createdBy: z.string().nullable(),
6208
6159
  createdAt: z.string(),
6160
+ updatedAt: z.string(),
6161
+ isActive: z.boolean(),
6209
6162
  version: z.number().int()
6210
6163
  });
6211
6164
  z.object({
@@ -6854,6 +6807,25 @@ var list = createAdapter("list", [
6854
6807
  "listPendingContactIds"
6855
6808
  ]);
6856
6809
 
6810
+ // src/worker/adapters/artifacts.ts
6811
+ var artifacts = createAdapter("artifacts", [
6812
+ "listArtifacts",
6813
+ "createArtifact",
6814
+ "getActive"
6815
+ ]);
6816
+
6817
+ // src/worker/adapters/content.ts
6818
+ var content = createAdapter("content", [
6819
+ "createItem",
6820
+ "getItem",
6821
+ "listItems",
6822
+ "updateItem",
6823
+ "createAttempt",
6824
+ "listAttempts",
6825
+ "createDistribution",
6826
+ "updateDistribution"
6827
+ ]);
6828
+
6857
6829
  // src/worker/adapters/pdf.ts
6858
6830
  var pdf = createAdapter("pdf", ["render", "renderToBuffer"]);
6859
6831
 
@@ -7413,4 +7385,4 @@ if (workerData != null && workerData.kind === "static") {
7413
7385
  })();
7414
7386
  }
7415
7387
 
7416
- export { ListBuilderResultSchema, ListBuilderResultsSchema, PlatformToolError, acqDb, approval, classifyPlatformToolError, createAdapter, createAnymailfinderAdapter, createApifyAdapter, createAttioAdapter, createClickUpAdapter, createDropboxAdapter, createGmailAdapter, createGoogleSheetsAdapter, createInstantlyAdapter, createMillionVerifierAdapter, createResendAdapter, createSignatureApiAdapter, createStripeAdapter, createTombaAdapter, crm, email, executeWorkflow, execution, generateHmacToken, list, listBuilderWorkflow, llm, notifications, pdf, platform, projects, scheduler, startWorker, storage };
7388
+ export { ListBuilderResultSchema, ListBuilderResultsSchema, PlatformToolError, acqDb, approval, artifacts, classifyPlatformToolError, content, createAdapter, createAnymailfinderAdapter, createApifyAdapter, createAttioAdapter, createClickUpAdapter, createDropboxAdapter, createGmailAdapter, createGoogleSheetsAdapter, createInstantlyAdapter, createMillionVerifierAdapter, createResendAdapter, createSignatureApiAdapter, createStripeAdapter, createTombaAdapter, crm, email, executeWorkflow, execution, generateHmacToken, list, listBuilderWorkflow, llm, notifications, pdf, platform, projects, scheduler, startWorker, storage };