@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.
- package/dist/cli.cjs +35026 -30226
- package/dist/index.d.ts +1786 -808
- package/dist/index.js +789 -739
- package/dist/node/index.d.ts +105 -181
- package/dist/node/index.js +2 -2
- package/dist/test-utils/index.d.ts +901 -359
- package/dist/test-utils/index.js +587 -824
- package/dist/worker/index.d.ts +12685 -0
- package/dist/worker/index.js +188 -216
- package/package.json +4 -7
- package/reference/_navigation.md +161 -22
- package/reference/_reference-manifest.json +228 -4
- package/reference/claude-config.md +8 -0
- package/reference/core/exports.mdx +2 -0
- package/reference/core/index.mdx +3 -3
- package/reference/examples/organization-model.ts +117 -111
- package/reference/index.mdx +4 -4
- package/reference/packages/core/src/business/README.md +4 -1
- package/reference/packages/core/src/content/README.md +19 -0
- package/reference/packages/core/src/organization-model/README.md +148 -149
- package/reference/packages/core/src/organization-model/readiness/README.md +42 -0
- package/reference/packages/ui/src/features/README.md +28 -28
- package/reference/rules/active-change-index.md +40 -54
- package/reference/rules/agent-runtime.md +81 -0
- package/reference/rules/agent-start-here.md +71 -163
- package/reference/rules/deployment.md +33 -10
- package/reference/rules/error-handling.md +26 -0
- package/reference/rules/execution.md +13 -0
- package/reference/rules/frontend.md +10 -3
- package/reference/rules/observability.md +9 -1
- package/reference/rules/operations.md +26 -17
- package/reference/rules/organization-model.md +74 -88
- package/reference/rules/organization-os.md +71 -88
- package/reference/rules/package-taxonomy.md +11 -2
- package/reference/rules/platform.md +13 -7
- package/reference/rules/shared-types.md +36 -0
- package/reference/rules/task-tracking.md +30 -5
- package/reference/rules/ui.md +145 -3
- package/reference/rules/vibe-intents.md +271 -0
- package/reference/rules/vibe.md +17 -243
- package/reference/scaffold/core/organization-graph.mdx +112 -99
- package/reference/scaffold/core/organization-model.mdx +231 -215
- package/reference/scaffold/operations/propagation-pipeline.md +16 -17
- package/reference/scaffold/operations/scaffold-maintenance.md +22 -20
- package/reference/scaffold/operations/workflow-recipes.md +72 -20
- package/reference/scaffold/recipes/add-a-feature.md +156 -146
- package/reference/scaffold/recipes/add-a-resource.md +123 -117
- package/reference/scaffold/recipes/customize-crm-actions.md +28 -13
- package/reference/scaffold/recipes/customize-knowledge-browser.md +52 -117
- package/reference/scaffold/recipes/customize-organization-model.md +161 -149
- package/reference/scaffold/recipes/extend-a-base-entity.md +156 -140
- package/reference/scaffold/recipes/extend-content.md +265 -0
- package/reference/scaffold/recipes/extend-crm.md +16 -11
- package/reference/scaffold/recipes/extend-lead-gen.md +37 -21
- package/reference/scaffold/recipes/gate-by-feature-or-admin.md +160 -118
- package/reference/scaffold/recipes/index.md +6 -3
- package/reference/scaffold/recipes/query-the-knowledge-graph.md +23 -23
- package/reference/scaffold/reference/contracts.md +30 -56
- package/reference/scaffold/reference/feature-registry.md +3 -0
- package/reference/scaffold/reference/glossary.md +4 -4
- package/reference/scaffold/reference/system-interface-capabilities.md +5 -4
- package/reference/scaffold/ui/composition-extensibility.mdx +271 -232
- package/reference/scaffold/ui/customization.md +2 -2
- package/reference/scaffold/ui/feature-flags-and-gating.md +14 -6
- package/reference/scaffold/ui/feature-shell.mdx +277 -62
- package/reference/scaffold/ui/recipes.md +229 -197
- package/reference/sdk/cli-management.mdx +166 -33
- package/reference/sdk/cli.mdx +90 -13
- package/reference/sdk/concepts.mdx +2 -0
- package/reference/sdk/define-builders.mdx +76 -0
- package/reference/sdk/deployment/command-center.mdx +6 -2
- package/reference/sdk/deployment/execution-reference.mdx +64 -186
- package/reference/sdk/deployment/index.mdx +2 -0
- package/reference/sdk/exports.mdx +4 -4
- package/reference/sdk/framework/agent.mdx +52 -116
- package/reference/sdk/framework/index.mdx +46 -65
- package/reference/sdk/framework/project-structure.mdx +150 -205
- package/reference/sdk/framework/tutorial-system.mdx +2 -2
- package/reference/sdk/human-in-the-loop.mdx +152 -0
- package/reference/sdk/index.mdx +6 -7
- package/reference/sdk/platform-tools/adapters-platform.mdx +3 -1
- package/reference/sdk/platform-tools/index.mdx +12 -0
- package/reference/sdk/platform-tools/type-safety.mdx +4 -0
- package/reference/sdk/project-deployment-spec.mdx +131 -0
- package/reference/sdk/resources/index.mdx +21 -7
- package/reference/sdk/resources/patterns.mdx +54 -24
- package/reference/sdk/resources/types.mdx +7 -4
- package/reference/sdk/templates/data-enrichment.mdx +7 -3
- package/reference/sdk/templates/email-sender.mdx +139 -135
- package/reference/sdk/templates/lead-scorer.mdx +5 -1
- package/reference/sdk/templates/pdf-generator.mdx +155 -151
- package/reference/sdk/templates/recurring-job.mdx +195 -189
- package/reference/sdk/templates/text-classifier.mdx +4 -0
- package/reference/sdk/templates/web-scraper.mdx +139 -135
- package/reference/spine/spine-primer.md +135 -96
- package/reference/ui/exports.mdx +1 -0
- package/reference/ui/index.mdx +14 -7
- package/dist/types/worker/adapters/anymailfinder.d.ts +0 -14
- package/dist/types/worker/adapters/apify.d.ts +0 -14
- package/dist/types/worker/adapters/approval.d.ts +0 -23
- package/dist/types/worker/adapters/attio.d.ts +0 -22
- package/dist/types/worker/adapters/clickup.d.ts +0 -22
- package/dist/types/worker/adapters/create-adapter.d.ts +0 -41
- package/dist/types/worker/adapters/crm.d.ts +0 -20
- package/dist/types/worker/adapters/dropbox.d.ts +0 -14
- package/dist/types/worker/adapters/email.d.ts +0 -25
- package/dist/types/worker/adapters/execution.d.ts +0 -22
- package/dist/types/worker/adapters/gmail.d.ts +0 -14
- package/dist/types/worker/adapters/google-sheets.d.ts +0 -14
- package/dist/types/worker/adapters/index.d.ts +0 -33
- package/dist/types/worker/adapters/instantly.d.ts +0 -14
- package/dist/types/worker/adapters/lead.d.ts +0 -28
- package/dist/types/worker/adapters/list.d.ts +0 -9
- package/dist/types/worker/adapters/llm.d.ts +0 -45
- package/dist/types/worker/adapters/millionverifier.d.ts +0 -14
- package/dist/types/worker/adapters/notification.d.ts +0 -28
- package/dist/types/worker/adapters/pdf.d.ts +0 -22
- package/dist/types/worker/adapters/projects.d.ts +0 -20
- package/dist/types/worker/adapters/resend.d.ts +0 -14
- package/dist/types/worker/adapters/scheduler.d.ts +0 -25
- package/dist/types/worker/adapters/signature-api.d.ts +0 -14
- package/dist/types/worker/adapters/storage.d.ts +0 -33
- package/dist/types/worker/adapters/stripe.d.ts +0 -14
- package/dist/types/worker/adapters/tomba.d.ts +0 -14
- package/dist/types/worker/index.d.ts +0 -60
- package/dist/types/worker/platform.d.ts +0 -90
- package/dist/types/worker/utils.d.ts +0 -9
- package/reference/claude-config/Overview.md +0 -230
- package/reference/claude-config/hooks/post-edit-validate.mjs +0 -98
- package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +0 -187
- package/reference/claude-config/hooks/tool-failure-recovery.mjs +0 -73
- package/reference/claude-config/registries/graph-skills.json +0 -4
- package/reference/claude-config/registries/knowledge-flags.json +0 -154
- package/reference/claude-config/registries/skill-coverage.json +0 -20
- package/reference/claude-config/rules/active-change-index.md +0 -22
- package/reference/claude-config/rules/agent-start-here.md +0 -22
- package/reference/claude-config/rules/deployment.md +0 -22
- package/reference/claude-config/rules/error-handling.md +0 -22
- package/reference/claude-config/rules/execution.md +0 -22
- package/reference/claude-config/rules/frontend.md +0 -22
- package/reference/claude-config/rules/observability.md +0 -22
- package/reference/claude-config/rules/operations.md +0 -22
- package/reference/claude-config/rules/organization-model.md +0 -22
- package/reference/claude-config/rules/organization-os.md +0 -22
- package/reference/claude-config/rules/package-taxonomy.md +0 -22
- package/reference/claude-config/rules/platform.md +0 -22
- package/reference/claude-config/rules/shared-types.md +0 -22
- package/reference/claude-config/rules/task-tracking.md +0 -22
- package/reference/claude-config/rules/topbar-actions.md +0 -70
- package/reference/claude-config/rules/ui.md +0 -22
- package/reference/claude-config/rules/vibe.md +0 -22
- package/reference/claude-config/scripts/statusline-command.js +0 -18
- package/reference/claude-config/settings.json +0 -30
- package/reference/claude-config/skills/client/SKILL.md +0 -201
- package/reference/claude-config/skills/deploy/SKILL.md +0 -159
- package/reference/claude-config/skills/dsp/SKILL.md +0 -66
- package/reference/claude-config/skills/elevasis/SKILL.md +0 -251
- package/reference/claude-config/skills/explore/SKILL.md +0 -78
- package/reference/claude-config/skills/git-sync/SKILL.md +0 -166
- package/reference/claude-config/skills/om/SKILL.md +0 -475
- package/reference/claude-config/skills/om/operations/build.md +0 -237
- package/reference/claude-config/skills/om/operations/codify-level-a.md +0 -109
- package/reference/claude-config/skills/om/operations/codify-level-b.md +0 -159
- package/reference/claude-config/skills/om/operations/customers.md +0 -114
- package/reference/claude-config/skills/om/operations/features.md +0 -88
- package/reference/claude-config/skills/om/operations/goals.md +0 -123
- package/reference/claude-config/skills/om/operations/identity.md +0 -97
- package/reference/claude-config/skills/om/operations/labels.md +0 -110
- package/reference/claude-config/skills/om/operations/offerings.md +0 -114
- package/reference/claude-config/skills/om/operations/roles.md +0 -104
- package/reference/claude-config/skills/om/operations/scaffold.md +0 -163
- package/reference/claude-config/skills/om/operations/techStack.md +0 -38
- package/reference/claude-config/skills/project/SKILL.md +0 -1114
- package/reference/claude-config/skills/run-ui/SKILL.md +0 -73
- package/reference/claude-config/skills/save/SKILL.md +0 -183
- package/reference/claude-config/skills/setup/SKILL.md +0 -290
- package/reference/claude-config/skills/status/SKILL.md +0 -59
- package/reference/claude-config/skills/submit-request/SKILL.md +0 -180
- package/reference/claude-config/skills/sync/SKILL.md +0 -47
- package/reference/claude-config/skills/tutorial/SKILL.md +0 -259
- package/reference/claude-config/skills/tutorial/progress-template.md +0 -74
- package/reference/claude-config/skills/tutorial/technical.md +0 -1303
- package/reference/claude-config/skills/tutorial/vibe-coder.md +0 -890
- package/reference/claude-config/sync-notes/2026-04-22-git-sync-and-sync-notes.md +0 -27
- package/reference/claude-config/sync-notes/2026-04-22-lead-gen-deliverability-removal.md +0 -30
- package/reference/claude-config/sync-notes/2026-04-24-test-utils-and-template-tests.md +0 -73
- package/reference/claude-config/sync-notes/2026-04-24-ui-consolidation-and-sdk-cli-train.md +0 -86
- package/reference/claude-config/sync-notes/2026-04-25-auth-role-system-and-settings-roles.md +0 -55
- package/reference/claude-config/sync-notes/2026-04-27-crm-hitl-action-layer-cutover.md +0 -97
- package/reference/claude-config/sync-notes/2026-04-27-lead-gen-substrate-train.md +0 -112
- package/reference/claude-config/sync-notes/2026-04-29-crm-state-and-lead-gen-processing-status.md +0 -93
- package/reference/claude-config/sync-notes/2026-05-02-crm-ownership-next-action.md +0 -58
- package/reference/claude-config/sync-notes/2026-05-02-template-hardcode-workos-config.md +0 -56
- package/reference/claude-config/sync-notes/2026-05-04-elevasis-workspace.md +0 -71
- package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +0 -83
- package/reference/claude-config/sync-notes/2026-05-04-template-skills-run-ui-and-tutorial.md +0 -59
- package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +0 -42
- package/reference/claude-config/sync-notes/2026-05-06-crm-spine.md +0 -60
- package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +0 -37
- package/reference/claude-config/sync-notes/2026-05-07-sdk-changes-release-train.md +0 -34
- package/reference/claude-config/sync-notes/2026-05-08-resource-governance-scaffold-guidance.md +0 -38
- package/reference/claude-config/sync-notes/2026-05-09-clients-domain.md +0 -32
- package/reference/claude-config/sync-notes/2026-05-09-command-system.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-09-resource-governance-and-misc.md +0 -69
- package/reference/claude-config/sync-notes/2026-05-12-sdk-ready-release-train.md +0 -30
- package/reference/claude-config/sync-notes/2026-05-14-organization-model-ontology-refactor.md +0 -45
- package/reference/claude-config/sync-notes/2026-05-15-om-skill-rename-and-write-family.md +0 -52
- package/reference/claude-config/sync-notes/2026-05-17-sdk-boundary-consolidation.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +0 -32
- package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +0 -43
- package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +0 -40
- package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +0 -61
- package/reference/claude-config/sync-notes/2026-05-23-branding-names-to-identity.md +0 -49
- package/reference/claude-config/sync-notes/2026-05-23-lead-gen-manage-access.md +0 -31
- package/reference/claude-config/sync-notes/2026-05-23-om-deployment-drift-detection.md +0 -42
- package/reference/claude-config/sync-notes/2026-05-23-om-full-model-deploy-contract.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-23-ui-sdk-package-fixes.md +0 -37
- package/reference/claude-config/sync-notes/2026-05-24-platform-invite-router-core-baseline.md +0 -28
- package/reference/claude-config/sync-notes/2026-05-24-system-interface-readiness.md +0 -43
- package/reference/claude-config/sync-notes/2026-05-25-invitation-login-loader.md +0 -26
- package/reference/claude-config/sync-notes/2026-05-25-om-topbar-requests.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-25-system-interface-profile-registry-and-substrate.md +0 -35
- package/reference/claude-config/sync-notes/2026-05-25-tenant-om-scaffold-cli.md +0 -49
- package/reference/claude-config/sync-notes/2026-05-25-vibe-operate-intent.md +0 -47
- package/reference/claude-config/sync-notes/2026-05-28-om-snapshot-sdk-workflow-config.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-30-client-source-and-om-profiles.md +0 -39
- package/reference/claude-config/sync-notes/2026-06-02-knowledge-nested-group-routing.md +0 -27
- package/reference/claude-config/sync-notes/2026-06-02-nest-projects-under-platform.md +0 -45
- package/reference/claude-config/sync-notes/2026-06-03-skill-autogen-and-client-skill.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-04-scaffold-registry-lane-severity.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-05-appearance-app-mode-decouple.md +0 -29
- package/reference/claude-config/sync-notes/2026-06-05-ontology-endpoint-rename-and-knowledge-browser-ui.md +0 -86
- package/reference/claude-config/sync-notes/2026-06-06-om-build-systems-scaffold.md +0 -47
- package/reference/claude-config/sync-notes/2026-06-06-om-item-copy-references.md +0 -50
- package/reference/claude-config/sync-notes/2026-06-08-knowledge-base-page-not-found-fix.md +0 -76
- package/reference/claude-config/sync-notes/2026-06-09-agent-sessions-public-agent-chat-route.md +0 -75
- package/reference/claude-config/sync-notes/2026-06-09-sdk-cli-load-org-model-resolution.md +0 -42
- package/reference/claude-config/sync-notes/2026-06-12-agent-grants-visualizer-operations.md +0 -30
- package/reference/claude-config/sync-notes/2026-06-14-session-ux-and-project-cli-json.md +0 -33
- package/reference/claude-config/sync-notes/2026-06-14-shared-session-conversation-view.md +0 -26
- package/reference/claude-config/sync-notes/2026-06-15-session-chat-zero-wiring.md +0 -46
- package/reference/claude-config/sync-notes/2026-06-17-agent-session-ux-features.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-25-shared-page-scroll-contract-guard.md +0 -52
- package/reference/claude-config/sync-notes/2026-06-26-leadgen-overview-om-telemetry.md +0 -47
- package/reference/claude-config/sync-notes/2026-07-21-agent-scaffold-hardening.md +0 -75
- package/reference/claude-config/sync-notes/2026-07-23-agent-session-memory.md +0 -49
- package/reference/claude-config/sync-notes/2026-07-23-workos-org-marker.md +0 -50
- package/reference/claude-config/sync-notes/2026-07-24-claude-5-models-and-session-surface-fixes.md +0 -116
- package/reference/claude-config/sync-notes/2026-07-27-agent-strict-output-and-turn-drift.md +0 -73
- package/reference/claude-config/sync-notes/2026-07-28-agent-reply-is-its-own-field.md +0 -84
- package/reference/claude-config/sync-notes/2026-07-30-login-screen-and-member-provisioning-state.md +0 -114
- package/reference/claude-config/sync-notes/2026-08-02-auth-guard-defaults-and-truncation-fix.md +0 -122
- package/reference/claude-config/sync-notes/2026-08-03-agent-prose-escape-normalization.md +0 -88
- package/reference/claude-config/sync-notes/2026-08-03-cli-gateway-errors-and-request-timeout.md +0 -120
- package/reference/claude-config/sync-notes/README.md +0 -43
- package/reference/sdk/framework/interaction-guidance.mdx +0 -182
- package/reference/sdk/framework/memory.mdx +0 -326
- package/reference/sdk/framework/resource-documentation.mdx +0 -90
- package/reference/sdk/roadmap.mdx +0 -164
package/dist/worker/index.js
CHANGED
|
@@ -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
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
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
|
|
3051
|
-
const chars =
|
|
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
|
-
|
|
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
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
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 (
|
|
3530
|
-
const owner = getKeyOwner(key);
|
|
3495
|
+
if (key.startsWith("_")) {
|
|
3531
3496
|
logger.action(
|
|
3532
3497
|
"memory-set-rejected",
|
|
3533
|
-
`Rejected LLM update to
|
|
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(
|
|
3652
|
-
const estimated = estimateTokens(
|
|
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(
|
|
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 =
|
|
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.
|
|
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
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3837
|
-
|
|
3838
|
-
|
|
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,
|
|
4027
|
+
for (const [key, content2] of Object.entries(memoryOps.set)) {
|
|
4073
4028
|
if (!validateMemoryKeyOwnership(key, logger, iteration)) {
|
|
4074
4029
|
continue;
|
|
4075
4030
|
}
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
|
|
4080
|
-
|
|
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
|
-
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
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(
|
|
4208
|
-
const trimmed =
|
|
4209
|
-
if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return
|
|
4155
|
+
function parseIfJson(content2) {
|
|
4156
|
+
const trimmed = content2.trim();
|
|
4157
|
+
if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return content2;
|
|
4210
4158
|
try {
|
|
4211
|
-
return JSON.parse(
|
|
4159
|
+
return JSON.parse(content2);
|
|
4212
4160
|
} catch {
|
|
4213
|
-
return
|
|
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,
|
|
4278
|
-
const entryTokens = estimateTokens(
|
|
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(
|
|
4291
|
-
|
|
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(
|
|
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
|
|
4291
|
+
let content2 = entry.content;
|
|
4345
4292
|
let truncated;
|
|
4346
4293
|
if (entry.type === "tool-result" || entry.type === "error") {
|
|
4347
|
-
const before =
|
|
4348
|
-
const result = truncateContent(
|
|
4349
|
-
|
|
4294
|
+
const before = content2;
|
|
4295
|
+
const result = truncateContent(content2, MAX_TOOL_RESULT_TOKENS);
|
|
4296
|
+
content2 = result.content;
|
|
4350
4297
|
truncated = result.truncated;
|
|
4351
|
-
if (
|
|
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(
|
|
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
|
-
*
|
|
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
|
-
|
|
4523
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
4831
|
-
|
|
4832
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4862
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4876
|
-
|
|
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.
|
|
5014
|
-
|
|
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
|
-
*
|
|
5232
|
-
*
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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 };
|