@elevasis/sdk 1.44.3 → 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 +991 -650
- package/dist/index.d.ts +1045 -509
- package/dist/index.js +738 -688
- package/dist/node/index.d.ts +105 -97
- package/dist/test-utils/index.d.ts +42 -28
- package/dist/test-utils/index.js +514 -783
- package/dist/worker/index.d.ts +12112 -0
- package/dist/worker/index.js +121 -182
- 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 +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/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 = {
|
|
@@ -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(),
|
|
@@ -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
|
}
|
|
@@ -4073,11 +4028,13 @@ async function processMemory(memoryManager, response, logger, iteration) {
|
|
|
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 content === "string" ? content : JSON.stringify(content)),
|
|
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
|
}
|
|
@@ -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
|
|
@@ -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,
|
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",
|