@elevasis/sdk 1.44.2 → 1.45.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 +1001 -652
- package/dist/index.d.ts +1045 -509
- package/dist/index.js +748 -690
- package/dist/node/index.d.ts +105 -97
- package/dist/test-utils/index.d.ts +42 -28
- package/dist/test-utils/index.js +549 -732
- package/dist/worker/index.d.ts +12112 -0
- package/dist/worker/index.js +211 -186
- package/package.json +6 -9
- package/reference/_navigation.md +151 -21
- package/reference/_reference-manifest.json +186 -4
- package/reference/claude-config.md +8 -0
- package/reference/core/index.mdx +3 -3
- package/reference/examples/organization-model.ts +117 -111
- package/reference/index.mdx +4 -4
- 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 +15 -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 +111 -97
- package/reference/scaffold/core/organization-model.mdx +234 -214
- package/reference/scaffold/operations/propagation-pipeline.md +1 -1
- package/reference/scaffold/operations/scaffold-maintenance.md +19 -18
- package/reference/scaffold/operations/workflow-recipes.md +71 -19
- 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 +25 -10
- 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-crm.md +16 -11
- package/reference/scaffold/recipes/extend-lead-gen.md +25 -7
- package/reference/scaffold/recipes/gate-by-feature-or-admin.md +160 -118
- package/reference/scaffold/recipes/index.md +2 -2
- package/reference/scaffold/recipes/query-the-knowledge-graph.md +23 -23
- package/reference/scaffold/reference/contracts.md +12 -1
- package/reference/scaffold/reference/glossary.md +3 -3
- package/reference/scaffold/reference/system-interface-capabilities.md +5 -4
- package/reference/scaffold/ui/composition-extensibility.mdx +271 -232
- package/reference/scaffold/ui/feature-flags-and-gating.md +14 -6
- package/reference/scaffold/ui/feature-shell.mdx +279 -62
- package/reference/scaffold/ui/recipes.md +229 -197
- package/reference/sdk/cli-management.mdx +77 -29
- 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 +49 -119
- 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/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 +23 -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/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-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 = {
|
|
@@ -2601,6 +2612,11 @@ every response:
|
|
|
2601
2612
|
and never continue the response envelope in the reasoning text -- nextActions is a separate field
|
|
2602
2613
|
that you fill separately. A response carrying reasoning alone is discarded and retried.
|
|
2603
2614
|
|
|
2615
|
+
**Prose fields take real characters, never escape sequences.** A line break in ${includeMessage ? "message or reasoning" : "reasoning"} is
|
|
2616
|
+
a real line break -- not the two characters \\n. A quotation mark is the character ", not \\". The
|
|
2617
|
+
response is serialized for you; typing the escape yourself puts those literal characters into the
|
|
2618
|
+
stored text and in front of the reader.
|
|
2619
|
+
|
|
2604
2620
|
## Rules
|
|
2605
2621
|
|
|
2606
2622
|
- Batch independent tool calls in one iteration (faster execution)
|
|
@@ -3166,7 +3182,7 @@ function buildIterationResponseSchemaUncached(tools, capabilities) {
|
|
|
3166
3182
|
if (capabilities.message !== "off") {
|
|
3167
3183
|
properties.message = {
|
|
3168
3184
|
type: "string",
|
|
3169
|
-
description:
|
|
3185
|
+
description: 'Your reply to the user, as plain prose. This is the ONLY field the user sees. Use an empty string only when this iteration just calls tools and you have nothing to say yet. Write real line breaks and real quotation marks -- the two characters \\n are not a line break, and \\" is not a quotation mark. Serialization is handled for you.'
|
|
3170
3186
|
};
|
|
3171
3187
|
}
|
|
3172
3188
|
properties.reasoning = { type: "string", description: "Your reasoning process" };
|
|
@@ -3186,7 +3202,15 @@ function buildIterationResponseSchemaUncached(tools, capabilities) {
|
|
|
3186
3202
|
type: "object",
|
|
3187
3203
|
properties: {
|
|
3188
3204
|
key: { type: "string" },
|
|
3189
|
-
value: {
|
|
3205
|
+
value: {
|
|
3206
|
+
type: "string",
|
|
3207
|
+
// `memoryOps` has NO framework prompt section -- a grep across `prompt-sections/`
|
|
3208
|
+
// returns zero memory references -- so this description is the only framework-owned
|
|
3209
|
+
// lever on how a memory value is written. It matters more here than in `message`:
|
|
3210
|
+
// a session-memory value is re-sent on every iteration of every subsequent turn and
|
|
3211
|
+
// never ages out, so one literal escape stored here is one the model re-reads forever.
|
|
3212
|
+
description: "Stored verbatim and replayed to you on every later turn. Write real line breaks and real quotation marks -- the two characters \\n are not a line break."
|
|
3213
|
+
}
|
|
3190
3214
|
},
|
|
3191
3215
|
required: ["key", "value"],
|
|
3192
3216
|
additionalProperties: false
|
|
@@ -3205,6 +3229,59 @@ function buildIterationResponseSchemaUncached(tools, capabilities) {
|
|
|
3205
3229
|
};
|
|
3206
3230
|
}
|
|
3207
3231
|
|
|
3232
|
+
// ../core/src/execution/engine/agent/reasoning/adapters/prose-escapes.ts
|
|
3233
|
+
var BACKSLASH = String.fromCharCode(92);
|
|
3234
|
+
function normalizeProseEscapes(text) {
|
|
3235
|
+
if (!text.includes(BACKSLASH)) return text;
|
|
3236
|
+
let out = "";
|
|
3237
|
+
let i = 0;
|
|
3238
|
+
while (i < text.length) {
|
|
3239
|
+
const char = text[i];
|
|
3240
|
+
if (char !== BACKSLASH || i + 1 >= text.length) {
|
|
3241
|
+
out += char;
|
|
3242
|
+
i += 1;
|
|
3243
|
+
continue;
|
|
3244
|
+
}
|
|
3245
|
+
switch (text[i + 1]) {
|
|
3246
|
+
case BACKSLASH:
|
|
3247
|
+
out += BACKSLASH + BACKSLASH;
|
|
3248
|
+
i += 2;
|
|
3249
|
+
break;
|
|
3250
|
+
case "n":
|
|
3251
|
+
out += "\n";
|
|
3252
|
+
i += 2;
|
|
3253
|
+
break;
|
|
3254
|
+
case "r":
|
|
3255
|
+
if (text[i + 2] === BACKSLASH && text[i + 3] === "n") {
|
|
3256
|
+
out += "\n";
|
|
3257
|
+
i += 4;
|
|
3258
|
+
} else {
|
|
3259
|
+
out += "\n";
|
|
3260
|
+
i += 2;
|
|
3261
|
+
}
|
|
3262
|
+
break;
|
|
3263
|
+
case "t":
|
|
3264
|
+
out += " ";
|
|
3265
|
+
i += 2;
|
|
3266
|
+
break;
|
|
3267
|
+
case '"':
|
|
3268
|
+
out += '"';
|
|
3269
|
+
i += 2;
|
|
3270
|
+
break;
|
|
3271
|
+
default:
|
|
3272
|
+
out += char;
|
|
3273
|
+
i += 1;
|
|
3274
|
+
}
|
|
3275
|
+
}
|
|
3276
|
+
return out;
|
|
3277
|
+
}
|
|
3278
|
+
function normalizeMemoryValue(value) {
|
|
3279
|
+
if (typeof value !== "string") return value;
|
|
3280
|
+
const trimmed = value.trim();
|
|
3281
|
+
if (trimmed.startsWith("{") || trimmed.startsWith("[")) return value;
|
|
3282
|
+
return normalizeProseEscapes(value);
|
|
3283
|
+
}
|
|
3284
|
+
|
|
3208
3285
|
// ../core/src/execution/engine/agent/reasoning/adapters/agent-adapter-helpers.ts
|
|
3209
3286
|
var MemoryKeyValuePairSchema = z.object({ key: z.string(), value: z.any() });
|
|
3210
3287
|
var MemorySetSchema = z.union([z.record(z.string(), z.any()), z.array(MemoryKeyValuePairSchema)]).transform((value) => {
|
|
@@ -3216,13 +3293,33 @@ var MemoryOperationsSchema = z.object({
|
|
|
3216
3293
|
// Accept any value type - framework will stringify
|
|
3217
3294
|
delete: z.array(z.string()).optional()
|
|
3218
3295
|
});
|
|
3219
|
-
var
|
|
3296
|
+
var AgentIterationOutputObjectSchema = z.object({
|
|
3220
3297
|
reasoning: z.string(),
|
|
3221
3298
|
message: z.string().optional(),
|
|
3222
3299
|
memoryOps: MemoryOperationsSchema.optional(),
|
|
3223
3300
|
nextActions: z.array(AgentActionSchema)
|
|
3224
3301
|
});
|
|
3225
|
-
|
|
3302
|
+
function normalizeIterationProse(output) {
|
|
3303
|
+
const normalized = { ...output };
|
|
3304
|
+
normalized.reasoning = normalizeProseEscapes(output.reasoning);
|
|
3305
|
+
if (typeof output.message === "string") {
|
|
3306
|
+
normalized.message = normalizeProseEscapes(output.message);
|
|
3307
|
+
}
|
|
3308
|
+
if (output.memoryOps?.set) {
|
|
3309
|
+
normalized.memoryOps = {
|
|
3310
|
+
...output.memoryOps,
|
|
3311
|
+
set: Object.fromEntries(
|
|
3312
|
+
Object.entries(output.memoryOps.set).map(([key, value]) => [key, normalizeMemoryValue(value)])
|
|
3313
|
+
)
|
|
3314
|
+
};
|
|
3315
|
+
}
|
|
3316
|
+
normalized.nextActions = output.nextActions.map(
|
|
3317
|
+
(action) => action.type === "message" ? { ...action, text: normalizeProseEscapes(action.text) } : action
|
|
3318
|
+
);
|
|
3319
|
+
return normalized;
|
|
3320
|
+
}
|
|
3321
|
+
var AgentIterationOutputSchema = AgentIterationOutputObjectSchema.transform(normalizeIterationProse);
|
|
3322
|
+
var REQUIRED_ITERATION_KEYS = Object.entries(AgentIterationOutputObjectSchema.shape).filter(([, fieldSchema]) => !fieldSchema.isOptional()).map(([key]) => key);
|
|
3226
3323
|
function withSynthesizedMessage(nextActions, message) {
|
|
3227
3324
|
const text = message?.trim();
|
|
3228
3325
|
if (!text) {
|
|
@@ -3357,66 +3454,21 @@ async function processReasoning(iterationContext) {
|
|
|
3357
3454
|
reasoning: response.reasoning
|
|
3358
3455
|
});
|
|
3359
3456
|
iterationContext.logger.reasoning(response.reasoning, iterationContext.iteration, startTime, endTime, duration);
|
|
3360
|
-
|
|
3361
|
-
iterationContext.memoryManager.addToHistory({
|
|
3362
|
-
type: "reasoning",
|
|
3363
|
-
content: response.reasoning,
|
|
3364
|
-
turnNumber: iterationContext.executionContext.sessionTurnNumber ?? null,
|
|
3365
|
-
iterationNumber: iterationContext.iteration,
|
|
3366
|
-
source: "model"
|
|
3367
|
-
});
|
|
3368
|
-
const memoryEndTime = Date.now();
|
|
3369
|
-
const memoryDuration = memoryEndTime - memoryStartTime;
|
|
3370
|
-
iterationContext.logger.action(
|
|
3457
|
+
await iterationContext.logger.timed(
|
|
3371
3458
|
"memory-reasoning",
|
|
3372
|
-
`Stored reasoning (${response.reasoning.length} chars), history size: ${iterationContext.memoryManager.getHistoryLength()}, actions: ${response.nextActions.map((a) => a.type).join(", ")}`,
|
|
3373
3459
|
iterationContext.iteration,
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
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(", ")}`
|
|
3377
3468
|
);
|
|
3378
3469
|
return response;
|
|
3379
3470
|
}
|
|
3380
3471
|
|
|
3381
|
-
// ../core/src/execution/engine/agent/memory/domains.ts
|
|
3382
|
-
var MEMORY_DOMAINS = {
|
|
3383
|
-
/**
|
|
3384
|
-
* Tool-owned keys
|
|
3385
|
-
* Updated automatically by tools as side effects
|
|
3386
|
-
* LLM cannot modify these via memoryOps
|
|
3387
|
-
*
|
|
3388
|
-
* Tools manage complex structured data (caches, indexes, etc.)
|
|
3389
|
-
* that would be error-prone for LLM to update via JSON strings.
|
|
3390
|
-
*
|
|
3391
|
-
* No tool currently writes these three keys, so in practice the guard reserves the names
|
|
3392
|
-
* against the LLM rather than arbitrating a live conflict. That is still enforcement --
|
|
3393
|
-
* see `validateMemoryKeyOwnership` in `./utils` -- not dead code.
|
|
3394
|
-
*/
|
|
3395
|
-
TOOL_OWNED: [
|
|
3396
|
-
"notion-pages-cache",
|
|
3397
|
-
// Notion tools manage page hierarchy
|
|
3398
|
-
"github-repo-cache",
|
|
3399
|
-
// GitHub tools manage repository structure
|
|
3400
|
-
"slack-channel-cache"
|
|
3401
|
-
// Slack tools manage channel data
|
|
3402
|
-
]
|
|
3403
|
-
/**
|
|
3404
|
-
* LLM-owned keys
|
|
3405
|
-
* All keys NOT in TOOL_OWNED
|
|
3406
|
-
* Managed via memoryOps by agent reasoning
|
|
3407
|
-
*
|
|
3408
|
-
* LLM manages semantic memory (business context, decisions, etc.)
|
|
3409
|
-
* that requires understanding and judgment.
|
|
3410
|
-
*/
|
|
3411
|
-
};
|
|
3412
|
-
function isToolOwnedKey(key) {
|
|
3413
|
-
return MEMORY_DOMAINS.TOOL_OWNED.includes(key);
|
|
3414
|
-
}
|
|
3415
|
-
function getKeyOwner(key) {
|
|
3416
|
-
if (isToolOwnedKey(key)) return "tool";
|
|
3417
|
-
return "llm";
|
|
3418
|
-
}
|
|
3419
|
-
|
|
3420
3472
|
// ../core/src/execution/engine/agent/memory/utils.ts
|
|
3421
3473
|
function addToolError(memoryManager, action, errorMessage, iteration, turnNumber = null, metadata) {
|
|
3422
3474
|
memoryManager.addToHistory({
|
|
@@ -3440,11 +3492,10 @@ function addToolError(memoryManager, action, errorMessage, iteration, turnNumber
|
|
|
3440
3492
|
});
|
|
3441
3493
|
}
|
|
3442
3494
|
function validateMemoryKeyOwnership(key, logger, iteration) {
|
|
3443
|
-
if (
|
|
3444
|
-
const owner = getKeyOwner(key);
|
|
3495
|
+
if (key.startsWith("_")) {
|
|
3445
3496
|
logger.action(
|
|
3446
3497
|
"memory-set-rejected",
|
|
3447
|
-
`Rejected LLM update to
|
|
3498
|
+
`Rejected LLM update to framework-reserved key: ${key}`,
|
|
3448
3499
|
iteration,
|
|
3449
3500
|
Date.now(),
|
|
3450
3501
|
Date.now(),
|
|
@@ -3686,25 +3737,19 @@ async function executeToolCall(iterationContext, action) {
|
|
|
3686
3737
|
action.input,
|
|
3687
3738
|
boundedResult
|
|
3688
3739
|
);
|
|
3689
|
-
const memoryStartTime = Date.now();
|
|
3690
3740
|
const memoryContent = typeof boundedResult === "string" ? boundedResult : JSON.stringify(boundedResult);
|
|
3691
|
-
iterationContext.
|
|
3692
|
-
type: "tool-result",
|
|
3693
|
-
content: memoryContent,
|
|
3694
|
-
toolName: action.name,
|
|
3695
|
-
turnNumber: iterationContext.executionContext.sessionTurnNumber ?? null,
|
|
3696
|
-
iterationNumber: iterationContext.iteration,
|
|
3697
|
-
source: "tool"
|
|
3698
|
-
});
|
|
3699
|
-
const memoryEndTime = Date.now();
|
|
3700
|
-
const memoryDuration = memoryEndTime - memoryStartTime;
|
|
3701
|
-
iterationContext.logger.action(
|
|
3741
|
+
await iterationContext.logger.timed(
|
|
3702
3742
|
"memory-tool-result",
|
|
3703
|
-
`Stored tool-result for ${action.name} (${memoryContent.length} chars), history size: ${iterationContext.memoryManager.getHistoryLength()}`,
|
|
3704
3743
|
iterationContext.iteration,
|
|
3705
|
-
|
|
3706
|
-
|
|
3707
|
-
|
|
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()}`
|
|
3708
3753
|
);
|
|
3709
3754
|
} catch (error) {
|
|
3710
3755
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
@@ -3727,29 +3772,25 @@ async function executeToolCall(iterationContext, action) {
|
|
|
3727
3772
|
action.input,
|
|
3728
3773
|
void 0
|
|
3729
3774
|
);
|
|
3730
|
-
|
|
3731
|
-
const metadata = error instanceof ToolingError ? {
|
|
3732
|
-
errorType: error.errorType,
|
|
3733
|
-
severity: error.severity,
|
|
3734
|
-
isRetryable: error.isRetryable()
|
|
3735
|
-
} : void 0;
|
|
3736
|
-
addToolError(
|
|
3737
|
-
iterationContext.memoryManager,
|
|
3738
|
-
action,
|
|
3739
|
-
errorMessage,
|
|
3740
|
-
iterationContext.iteration,
|
|
3741
|
-
iterationContext.executionContext.sessionTurnNumber ?? null,
|
|
3742
|
-
metadata
|
|
3743
|
-
);
|
|
3744
|
-
const memoryEndTime = Date.now();
|
|
3745
|
-
const memoryDuration = memoryEndTime - memoryStartTime;
|
|
3746
|
-
iterationContext.logger.action(
|
|
3775
|
+
await iterationContext.logger.timed(
|
|
3747
3776
|
"memory-tool-error",
|
|
3748
|
-
`Stored error for ${action.name}: ${errorMessage}, history size: ${iterationContext.memoryManager.getHistoryLength()}`,
|
|
3749
3777
|
iterationContext.iteration,
|
|
3750
|
-
|
|
3751
|
-
|
|
3752
|
-
|
|
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()}`
|
|
3753
3794
|
);
|
|
3754
3795
|
}
|
|
3755
3796
|
}
|
|
@@ -3987,11 +4028,13 @@ async function processMemory(memoryManager, response, logger, iteration) {
|
|
|
3987
4028
|
if (!validateMemoryKeyOwnership(key, logger, iteration)) {
|
|
3988
4029
|
continue;
|
|
3989
4030
|
}
|
|
3990
|
-
|
|
3991
|
-
|
|
3992
|
-
|
|
3993
|
-
|
|
3994
|
-
|
|
4031
|
+
await logger.timed(
|
|
4032
|
+
"memory-set",
|
|
4033
|
+
iteration,
|
|
4034
|
+
// Auto-stringify non-string values (arrays, objects, etc.)
|
|
4035
|
+
() => memoryManager.set(key, typeof content === "string" ? content : JSON.stringify(content)),
|
|
4036
|
+
() => `Set: ${key}`
|
|
4037
|
+
);
|
|
3995
4038
|
}
|
|
3996
4039
|
}
|
|
3997
4040
|
if (memoryOps.delete) {
|
|
@@ -3999,21 +4042,12 @@ async function processMemory(memoryManager, response, logger, iteration) {
|
|
|
3999
4042
|
if (!validateMemoryKeyOwnership(key, logger, iteration)) {
|
|
4000
4043
|
continue;
|
|
4001
4044
|
}
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
|
|
4008
|
-
logger.action(
|
|
4009
|
-
"memory-delete-missing",
|
|
4010
|
-
`Attempted to delete non-existent key: ${key}`,
|
|
4011
|
-
iteration,
|
|
4012
|
-
startTime,
|
|
4013
|
-
endTime,
|
|
4014
|
-
endTime - startTime
|
|
4015
|
-
);
|
|
4016
|
-
}
|
|
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
|
+
);
|
|
4017
4051
|
}
|
|
4018
4052
|
}
|
|
4019
4053
|
}
|
|
@@ -4140,7 +4174,6 @@ var MemoryManager = class {
|
|
|
4140
4174
|
this.constraints = constraints;
|
|
4141
4175
|
this.logger = logger;
|
|
4142
4176
|
}
|
|
4143
|
-
cachedSnapshot;
|
|
4144
4177
|
/**
|
|
4145
4178
|
* Rolling correction for `estimateTokens`'s bias, learned from real provider usage.
|
|
4146
4179
|
* `undefined` until the first `recordActualUsage` call -- the cold-start state, where
|
|
@@ -4429,21 +4462,15 @@ var MemoryManager = class {
|
|
|
4429
4462
|
};
|
|
4430
4463
|
}
|
|
4431
4464
|
/**
|
|
4432
|
-
* Create memory snapshot for persistence
|
|
4433
|
-
*
|
|
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
|
+
*
|
|
4434
4470
|
* @returns Deep copy of current memory state
|
|
4435
4471
|
*/
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
return this.cachedSnapshot;
|
|
4439
|
-
}
|
|
4440
|
-
/**
|
|
4441
|
-
* Get cached memory snapshot
|
|
4442
|
-
* Returns snapshot created by toSnapshot()
|
|
4443
|
-
* @returns Cached snapshot (undefined if toSnapshot() not called yet)
|
|
4444
|
-
*/
|
|
4445
|
-
getSnapshot() {
|
|
4446
|
-
return this.cachedSnapshot;
|
|
4472
|
+
snapshot() {
|
|
4473
|
+
return structuredClone(this.memory);
|
|
4447
4474
|
}
|
|
4448
4475
|
/**
|
|
4449
4476
|
* Build the framework framing and the untrusted data envelope for an LLM call.
|
|
@@ -4575,6 +4602,12 @@ var Agent = class {
|
|
|
4575
4602
|
* reading memory history after the fact, because the emit is the user-visible event and memory
|
|
4576
4603
|
* can be compacted or restructured without changing whether the turn spoke. */
|
|
4577
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;
|
|
4578
4611
|
/**
|
|
4579
4612
|
* Create a new agent instance from definition
|
|
4580
4613
|
* Memory will be initialized during execution
|
|
@@ -4615,7 +4648,7 @@ var Agent = class {
|
|
|
4615
4648
|
try {
|
|
4616
4649
|
await this.iterate(this.executionContext);
|
|
4617
4650
|
} finally {
|
|
4618
|
-
this.memoryManager.
|
|
4651
|
+
this.memorySnapshot = this.memoryManager.snapshot();
|
|
4619
4652
|
}
|
|
4620
4653
|
}
|
|
4621
4654
|
const output = await this.complete();
|
|
@@ -4728,22 +4761,21 @@ var Agent = class {
|
|
|
4728
4761
|
async initializeMemoryManager(context) {
|
|
4729
4762
|
const memory = await this.resolveInitialMemory(context);
|
|
4730
4763
|
const memoryManager = new MemoryManager(memory, this.config.constraints, this.logger);
|
|
4731
|
-
|
|
4732
|
-
memoryManager.addToHistory({
|
|
4733
|
-
type: "input",
|
|
4734
|
-
content: this.currentInput,
|
|
4735
|
-
turnNumber: context.sessionTurnNumber ?? null,
|
|
4736
|
-
iterationNumber: 0,
|
|
4737
|
-
source: "user"
|
|
4738
|
-
});
|
|
4739
|
-
const inputEndTime = Date.now();
|
|
4740
|
-
this.logger.action(
|
|
4764
|
+
await this.logger.timed(
|
|
4741
4765
|
"memory-input",
|
|
4742
|
-
`Added input entry to history`,
|
|
4743
4766
|
0,
|
|
4744
|
-
|
|
4745
|
-
|
|
4746
|
-
|
|
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`
|
|
4747
4779
|
);
|
|
4748
4780
|
flowLog("agent.initialize", {
|
|
4749
4781
|
resourceId: this.config.resourceId,
|
|
@@ -4765,32 +4797,20 @@ var Agent = class {
|
|
|
4765
4797
|
*/
|
|
4766
4798
|
async resolveInitialMemory(context) {
|
|
4767
4799
|
if (this.initialMemory) {
|
|
4768
|
-
|
|
4769
|
-
const memory = structuredClone(this.initialMemory);
|
|
4770
|
-
const restoreEndTime = Date.now();
|
|
4771
|
-
this.logger.action(
|
|
4800
|
+
return this.logger.timed(
|
|
4772
4801
|
"memory-restore",
|
|
4773
|
-
`Restored ${Object.keys(memory.sessionMemory).length} session memory entries`,
|
|
4774
4802
|
0,
|
|
4775
|
-
|
|
4776
|
-
|
|
4777
|
-
restoreEndTime - restoreStartTime
|
|
4803
|
+
() => structuredClone(this.initialMemory),
|
|
4804
|
+
(memory) => `Restored ${Object.keys(memory.sessionMemory).length} session memory entries`
|
|
4778
4805
|
);
|
|
4779
|
-
return memory;
|
|
4780
4806
|
}
|
|
4781
4807
|
if (this.definition.preloadMemory) {
|
|
4782
|
-
|
|
4783
|
-
const memory = await this.definition.preloadMemory(context);
|
|
4784
|
-
const preloadEndTime = Date.now();
|
|
4785
|
-
this.logger.action(
|
|
4808
|
+
return this.logger.timed(
|
|
4786
4809
|
"memory-preload",
|
|
4787
|
-
`Preloaded ${Object.keys(memory.sessionMemory).length} session memory entries`,
|
|
4788
4810
|
0,
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
preloadEndTime - preloadStartTime
|
|
4811
|
+
() => this.definition.preloadMemory(context),
|
|
4812
|
+
(memory) => `Preloaded ${Object.keys(memory.sessionMemory).length} session memory entries`
|
|
4792
4813
|
);
|
|
4793
|
-
return memory;
|
|
4794
4814
|
}
|
|
4795
4815
|
return { sessionMemory: {}, history: [] };
|
|
4796
4816
|
}
|
|
@@ -4924,8 +4944,8 @@ var Agent = class {
|
|
|
4924
4944
|
0
|
|
4925
4945
|
);
|
|
4926
4946
|
}
|
|
4927
|
-
this.memoryManager.
|
|
4928
|
-
|
|
4947
|
+
const snapshot = this.memoryManager.snapshot();
|
|
4948
|
+
this.memorySnapshot = snapshot;
|
|
4929
4949
|
const completionEndTime = Date.now();
|
|
4930
4950
|
this.logger.lifecycle("completion", "completed", {
|
|
4931
4951
|
startTime: completionStartTime,
|
|
@@ -5141,12 +5161,17 @@ Fix the errors and generate a valid output.
|
|
|
5141
5161
|
`.trim();
|
|
5142
5162
|
}
|
|
5143
5163
|
/**
|
|
5144
|
-
* Get memory snapshot after execution
|
|
5145
|
-
*
|
|
5146
|
-
*
|
|
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)
|
|
5147
5172
|
*/
|
|
5148
5173
|
getMemorySnapshot() {
|
|
5149
|
-
return this.
|
|
5174
|
+
return this.memorySnapshot;
|
|
5150
5175
|
}
|
|
5151
5176
|
/**
|
|
5152
5177
|
* How the just-finished turn ended -- see `AgentStopReason`. Set once `iterate()` returns,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elevasis/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.45.0",
|
|
4
4
|
"description": "SDK for building Elevasis organization resources",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"import": "./dist/index.js"
|
|
13
13
|
},
|
|
14
14
|
"./worker": {
|
|
15
|
-
"types": "./dist/
|
|
15
|
+
"types": "./dist/worker/index.d.ts",
|
|
16
16
|
"import": "./dist/worker/index.js"
|
|
17
17
|
},
|
|
18
18
|
"./test-utils": {
|
|
@@ -28,10 +28,7 @@
|
|
|
28
28
|
"dist/index.js",
|
|
29
29
|
"dist/index.d.ts",
|
|
30
30
|
"dist/worker/index.js",
|
|
31
|
-
"dist/
|
|
32
|
-
"dist/types/worker/platform.d.ts",
|
|
33
|
-
"dist/types/worker/utils.d.ts",
|
|
34
|
-
"dist/types/worker/adapters/",
|
|
31
|
+
"dist/worker/index.d.ts",
|
|
35
32
|
"dist/test-utils/index.js",
|
|
36
33
|
"dist/test-utils/index.d.ts",
|
|
37
34
|
"dist/node/",
|
|
@@ -58,9 +55,9 @@
|
|
|
58
55
|
"tsup": "^8.0.0",
|
|
59
56
|
"typescript": "5.9.2",
|
|
60
57
|
"zod": "^4.1.0",
|
|
61
|
-
"@repo/core": "0.
|
|
62
|
-
"@repo/
|
|
63
|
-
"@repo/
|
|
58
|
+
"@repo/core": "0.60.0",
|
|
59
|
+
"@repo/eslint-config": "0.0.0",
|
|
60
|
+
"@repo/typescript-config": "0.0.0"
|
|
64
61
|
},
|
|
65
62
|
"scripts": {
|
|
66
63
|
"lint": "eslint src --max-warnings 0",
|