clementine-agent 1.18.7 → 1.18.9
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/agent/assistant.d.ts +4 -2
- package/dist/agent/assistant.js +108 -30
- package/dist/agent/self-improve.d.ts +34 -0
- package/dist/agent/self-improve.js +282 -42
- package/dist/gateway/router.js +1 -0
- package/dist/memory/store.d.ts +12 -0
- package/dist/memory/store.js +51 -0
- package/dist/tools/shared.d.ts +12 -0
- package/dist/types.d.ts +3 -1
- package/package.json +1 -1
- package/dist/agent/advisor-rules/context.d.ts.map +0 -1
- package/dist/agent/advisor-rules/context.js.map +0 -1
- package/dist/agent/advisor-rules/engine.d.ts.map +0 -1
- package/dist/agent/advisor-rules/engine.js.map +0 -1
- package/dist/agent/advisor-rules/loader.d.ts.map +0 -1
- package/dist/agent/advisor-rules/loader.js.map +0 -1
- package/dist/agent/advisor-rules/types.d.ts.map +0 -1
- package/dist/agent/advisor-rules/types.js.map +0 -1
- package/dist/agent/agent-manager.d.ts.map +0 -1
- package/dist/agent/agent-manager.js.map +0 -1
- package/dist/agent/assistant.d.ts.map +0 -1
- package/dist/agent/assistant.js.map +0 -1
- package/dist/agent/auto-skills.d.ts.map +0 -1
- package/dist/agent/auto-skills.js.map +0 -1
- package/dist/agent/auto-update.d.ts.map +0 -1
- package/dist/agent/auto-update.js.map +0 -1
- package/dist/agent/background-tasks.d.ts.map +0 -1
- package/dist/agent/background-tasks.js.map +0 -1
- package/dist/agent/brain-digest.d.ts.map +0 -1
- package/dist/agent/brain-digest.js.map +0 -1
- package/dist/agent/budget-enforcement.d.ts.map +0 -1
- package/dist/agent/budget-enforcement.js.map +0 -1
- package/dist/agent/complexity-classifier.d.ts.map +0 -1
- package/dist/agent/complexity-classifier.js.map +0 -1
- package/dist/agent/contradiction-validator.d.ts.map +0 -1
- package/dist/agent/contradiction-validator.js.map +0 -1
- package/dist/agent/crash-forensics.d.ts.map +0 -1
- package/dist/agent/crash-forensics.js.map +0 -1
- package/dist/agent/daily-planner.d.ts.map +0 -1
- package/dist/agent/daily-planner.js.map +0 -1
- package/dist/agent/decision-reflection.d.ts.map +0 -1
- package/dist/agent/decision-reflection.js.map +0 -1
- package/dist/agent/execution-advisor.d.ts.map +0 -1
- package/dist/agent/execution-advisor.js.map +0 -1
- package/dist/agent/hooks.d.ts.map +0 -1
- package/dist/agent/hooks.js.map +0 -1
- package/dist/agent/insight-engine.d.ts.map +0 -1
- package/dist/agent/insight-engine.js.map +0 -1
- package/dist/agent/intent-classifier.d.ts.map +0 -1
- package/dist/agent/intent-classifier.js.map +0 -1
- package/dist/agent/link-extractor.d.ts.map +0 -1
- package/dist/agent/link-extractor.js.map +0 -1
- package/dist/agent/mcp-bridge.d.ts.map +0 -1
- package/dist/agent/mcp-bridge.js.map +0 -1
- package/dist/agent/mcp-circuit-breaker.d.ts.map +0 -1
- package/dist/agent/mcp-circuit-breaker.js.map +0 -1
- package/dist/agent/mcp-schemas.d.ts.map +0 -1
- package/dist/agent/mcp-schemas.js.map +0 -1
- package/dist/agent/metacognition.d.ts.map +0 -1
- package/dist/agent/metacognition.js.map +0 -1
- package/dist/agent/orchestrator.d.ts.map +0 -1
- package/dist/agent/orchestrator.js.map +0 -1
- package/dist/agent/proactive-engine.d.ts.map +0 -1
- package/dist/agent/proactive-engine.js.map +0 -1
- package/dist/agent/proactive-ledger.d.ts.map +0 -1
- package/dist/agent/proactive-ledger.js.map +0 -1
- package/dist/agent/prompt-cache.d.ts.map +0 -1
- package/dist/agent/prompt-cache.js.map +0 -1
- package/dist/agent/prompt-evolver.d.ts.map +0 -1
- package/dist/agent/prompt-evolver.js.map +0 -1
- package/dist/agent/prompt-overrides/loader.d.ts.map +0 -1
- package/dist/agent/prompt-overrides/loader.js.map +0 -1
- package/dist/agent/prompt-overrides/types.d.ts.map +0 -1
- package/dist/agent/prompt-overrides/types.js.map +0 -1
- package/dist/agent/role-scaffolds.d.ts.map +0 -1
- package/dist/agent/role-scaffolds.js.map +0 -1
- package/dist/agent/route-classifier.d.ts.map +0 -1
- package/dist/agent/route-classifier.js.map +0 -1
- package/dist/agent/safe-restart.d.ts.map +0 -1
- package/dist/agent/safe-restart.js.map +0 -1
- package/dist/agent/self-improve-loop.d.ts.map +0 -1
- package/dist/agent/self-improve-loop.js.map +0 -1
- package/dist/agent/self-improve.d.ts.map +0 -1
- package/dist/agent/self-improve.js.map +0 -1
- package/dist/agent/session-event-log.d.ts.map +0 -1
- package/dist/agent/session-event-log.js.map +0 -1
- package/dist/agent/session-store-adapter.d.ts.map +0 -1
- package/dist/agent/session-store-adapter.js.map +0 -1
- package/dist/agent/skill-extractor.d.ts.map +0 -1
- package/dist/agent/skill-extractor.js.map +0 -1
- package/dist/agent/source-mods.d.ts.map +0 -1
- package/dist/agent/source-mods.js.map +0 -1
- package/dist/agent/source-preflight.d.ts.map +0 -1
- package/dist/agent/source-preflight.js.map +0 -1
- package/dist/agent/stall-guard.d.ts.map +0 -1
- package/dist/agent/stall-guard.js.map +0 -1
- package/dist/agent/strategic-planner.d.ts.map +0 -1
- package/dist/agent/strategic-planner.js.map +0 -1
- package/dist/agent/team-bus.d.ts.map +0 -1
- package/dist/agent/team-bus.js.map +0 -1
- package/dist/agent/team-router.d.ts.map +0 -1
- package/dist/agent/team-router.js.map +0 -1
- package/dist/agent/tool-loop-detector.d.ts.map +0 -1
- package/dist/agent/tool-loop-detector.js.map +0 -1
- package/dist/agent/tool-router.d.ts.map +0 -1
- package/dist/agent/tool-router.js.map +0 -1
- package/dist/agent/turn-policy.d.ts.map +0 -1
- package/dist/agent/turn-policy.js.map +0 -1
- package/dist/agent/webhook-actions.d.ts.map +0 -1
- package/dist/agent/webhook-actions.js.map +0 -1
- package/dist/agent/workflow-runner.d.ts.map +0 -1
- package/dist/agent/workflow-runner.js.map +0 -1
- package/dist/agent/workflow-variables.d.ts.map +0 -1
- package/dist/agent/workflow-variables.js.map +0 -1
- package/dist/analytics/tool-usage.d.ts.map +0 -1
- package/dist/analytics/tool-usage.js.map +0 -1
- package/dist/brain/adapters/common.d.ts.map +0 -1
- package/dist/brain/adapters/common.js.map +0 -1
- package/dist/brain/adapters/csv.d.ts.map +0 -1
- package/dist/brain/adapters/csv.js.map +0 -1
- package/dist/brain/adapters/docx.d.ts.map +0 -1
- package/dist/brain/adapters/docx.js.map +0 -1
- package/dist/brain/adapters/email.d.ts.map +0 -1
- package/dist/brain/adapters/email.js.map +0 -1
- package/dist/brain/adapters/index.d.ts.map +0 -1
- package/dist/brain/adapters/index.js.map +0 -1
- package/dist/brain/adapters/json.d.ts.map +0 -1
- package/dist/brain/adapters/json.js.map +0 -1
- package/dist/brain/adapters/markdown.d.ts.map +0 -1
- package/dist/brain/adapters/markdown.js.map +0 -1
- package/dist/brain/adapters/pdf.d.ts.map +0 -1
- package/dist/brain/adapters/pdf.js.map +0 -1
- package/dist/brain/adapters/rest.d.ts.map +0 -1
- package/dist/brain/adapters/rest.js.map +0 -1
- package/dist/brain/batch-summary.d.ts.map +0 -1
- package/dist/brain/batch-summary.js.map +0 -1
- package/dist/brain/connector-recipes.d.ts.map +0 -1
- package/dist/brain/connector-recipes.js.map +0 -1
- package/dist/brain/format-detector.d.ts.map +0 -1
- package/dist/brain/format-detector.js.map +0 -1
- package/dist/brain/graph-extractor.d.ts.map +0 -1
- package/dist/brain/graph-extractor.js.map +0 -1
- package/dist/brain/ingest-scheduler.d.ts.map +0 -1
- package/dist/brain/ingest-scheduler.js.map +0 -1
- package/dist/brain/ingestion-pipeline.d.ts.map +0 -1
- package/dist/brain/ingestion-pipeline.js.map +0 -1
- package/dist/brain/intelligence.d.ts.map +0 -1
- package/dist/brain/intelligence.js.map +0 -1
- package/dist/brain/llm-client.d.ts.map +0 -1
- package/dist/brain/llm-client.js.map +0 -1
- package/dist/brain/source-registry.d.ts.map +0 -1
- package/dist/brain/source-registry.js.map +0 -1
- package/dist/channels/discord-agent-bot.d.ts.map +0 -1
- package/dist/channels/discord-agent-bot.js.map +0 -1
- package/dist/channels/discord-bot-manager.d.ts.map +0 -1
- package/dist/channels/discord-bot-manager.js.map +0 -1
- package/dist/channels/discord-utils.d.ts.map +0 -1
- package/dist/channels/discord-utils.js.map +0 -1
- package/dist/channels/discord.d.ts.map +0 -1
- package/dist/channels/discord.js.map +0 -1
- package/dist/channels/slack-agent-bot.d.ts.map +0 -1
- package/dist/channels/slack-agent-bot.js.map +0 -1
- package/dist/channels/slack-bot-manager.d.ts.map +0 -1
- package/dist/channels/slack-bot-manager.js.map +0 -1
- package/dist/channels/slack-utils.d.ts.map +0 -1
- package/dist/channels/slack-utils.js.map +0 -1
- package/dist/channels/slack.d.ts.map +0 -1
- package/dist/channels/slack.js.map +0 -1
- package/dist/channels/telegram.d.ts.map +0 -1
- package/dist/channels/telegram.js.map +0 -1
- package/dist/channels/webhook.d.ts.map +0 -1
- package/dist/channels/webhook.js.map +0 -1
- package/dist/channels/whatsapp.d.ts.map +0 -1
- package/dist/channels/whatsapp.js.map +0 -1
- package/dist/cli/browser.d.ts.map +0 -1
- package/dist/cli/browser.js.map +0 -1
- package/dist/cli/chat.d.ts.map +0 -1
- package/dist/cli/chat.js.map +0 -1
- package/dist/cli/cron.d.ts.map +0 -1
- package/dist/cli/cron.js.map +0 -1
- package/dist/cli/dashboard.d.ts.map +0 -1
- package/dist/cli/dashboard.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/ingest.d.ts.map +0 -1
- package/dist/cli/ingest.js.map +0 -1
- package/dist/cli/routes/delegations.d.ts.map +0 -1
- package/dist/cli/routes/delegations.js.map +0 -1
- package/dist/cli/routes/digest.d.ts.map +0 -1
- package/dist/cli/routes/digest.js.map +0 -1
- package/dist/cli/routes/goals.d.ts.map +0 -1
- package/dist/cli/routes/goals.js.map +0 -1
- package/dist/cli/routes/workflows.d.ts.map +0 -1
- package/dist/cli/routes/workflows.js.map +0 -1
- package/dist/cli/setup.d.ts.map +0 -1
- package/dist/cli/setup.js.map +0 -1
- package/dist/cli/tunnel.d.ts.map +0 -1
- package/dist/cli/tunnel.js.map +0 -1
- package/dist/cli/version-check.d.ts.map +0 -1
- package/dist/cli/version-check.js.map +0 -1
- package/dist/config/clementine-json.d.ts.map +0 -1
- package/dist/config/clementine-json.js.map +0 -1
- package/dist/config/config-doctor.d.ts.map +0 -1
- package/dist/config/config-doctor.js.map +0 -1
- package/dist/config/effective-config.d.ts.map +0 -1
- package/dist/config/effective-config.js.map +0 -1
- package/dist/config/env-parser.d.ts.map +0 -1
- package/dist/config/env-parser.js.map +0 -1
- package/dist/config/harden-permissions.d.ts.map +0 -1
- package/dist/config/harden-permissions.js.map +0 -1
- package/dist/config/integrations-registry.d.ts.map +0 -1
- package/dist/config/integrations-registry.js.map +0 -1
- package/dist/config/keychain-first-run-wizard.d.ts.map +0 -1
- package/dist/config/keychain-first-run-wizard.js.map +0 -1
- package/dist/config/keychain-fix-acl.d.ts.map +0 -1
- package/dist/config/keychain-fix-acl.js.map +0 -1
- package/dist/config/migrate-from-keychain.d.ts.map +0 -1
- package/dist/config/migrate-from-keychain.js.map +0 -1
- package/dist/config/migrate-keychain.d.ts.map +0 -1
- package/dist/config/migrate-keychain.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/dashboard/builder/dry-run.d.ts.map +0 -1
- package/dist/dashboard/builder/dry-run.js.map +0 -1
- package/dist/dashboard/builder/events.d.ts.map +0 -1
- package/dist/dashboard/builder/events.js.map +0 -1
- package/dist/dashboard/builder/mcp-invoke.d.ts.map +0 -1
- package/dist/dashboard/builder/mcp-invoke.js.map +0 -1
- package/dist/dashboard/builder/runner.d.ts.map +0 -1
- package/dist/dashboard/builder/runner.js.map +0 -1
- package/dist/dashboard/builder/serializer.d.ts.map +0 -1
- package/dist/dashboard/builder/serializer.js.map +0 -1
- package/dist/dashboard/builder/snapshots.d.ts.map +0 -1
- package/dist/dashboard/builder/snapshots.js.map +0 -1
- package/dist/dashboard/builder/validation.d.ts.map +0 -1
- package/dist/dashboard/builder/validation.js.map +0 -1
- package/dist/events/bus.d.ts.map +0 -1
- package/dist/events/bus.js.map +0 -1
- package/dist/gateway/agent-heartbeat-manager.d.ts.map +0 -1
- package/dist/gateway/agent-heartbeat-manager.js.map +0 -1
- package/dist/gateway/agent-heartbeat-scheduler.d.ts.map +0 -1
- package/dist/gateway/agent-heartbeat-scheduler.js.map +0 -1
- package/dist/gateway/claim-tracker.d.ts.map +0 -1
- package/dist/gateway/claim-tracker.js.map +0 -1
- package/dist/gateway/cron-scheduler.d.ts.map +0 -1
- package/dist/gateway/cron-scheduler.js.map +0 -1
- package/dist/gateway/delivery-queue.d.ts.map +0 -1
- package/dist/gateway/delivery-queue.js.map +0 -1
- package/dist/gateway/failure-diagnostics.d.ts.map +0 -1
- package/dist/gateway/failure-diagnostics.js.map +0 -1
- package/dist/gateway/failure-monitor.d.ts.map +0 -1
- package/dist/gateway/failure-monitor.js.map +0 -1
- package/dist/gateway/fix-applier.d.ts.map +0 -1
- package/dist/gateway/fix-applier.js.map +0 -1
- package/dist/gateway/fix-verification.d.ts.map +0 -1
- package/dist/gateway/fix-verification.js.map +0 -1
- package/dist/gateway/heartbeat-scheduler.d.ts.map +0 -1
- package/dist/gateway/heartbeat-scheduler.js.map +0 -1
- package/dist/gateway/heartbeat.d.ts.map +0 -1
- package/dist/gateway/heartbeat.js.map +0 -1
- package/dist/gateway/lanes.d.ts.map +0 -1
- package/dist/gateway/lanes.js.map +0 -1
- package/dist/gateway/notifications.d.ts.map +0 -1
- package/dist/gateway/notifications.js.map +0 -1
- package/dist/gateway/outcome-grader.d.ts.map +0 -1
- package/dist/gateway/outcome-grader.js.map +0 -1
- package/dist/gateway/router.d.ts.map +0 -1
- package/dist/gateway/router.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/integrations/composio/client.d.ts.map +0 -1
- package/dist/integrations/composio/client.js.map +0 -1
- package/dist/integrations/composio/mcp-bridge.d.ts.map +0 -1
- package/dist/integrations/composio/mcp-bridge.js.map +0 -1
- package/dist/integrations/tool-preferences.d.ts.map +0 -1
- package/dist/integrations/tool-preferences.js.map +0 -1
- package/dist/memory/chunker.d.ts.map +0 -1
- package/dist/memory/chunker.js.map +0 -1
- package/dist/memory/consolidation.d.ts.map +0 -1
- package/dist/memory/consolidation.js.map +0 -1
- package/dist/memory/context-assembler.d.ts.map +0 -1
- package/dist/memory/context-assembler.js.map +0 -1
- package/dist/memory/embeddings.d.ts.map +0 -1
- package/dist/memory/embeddings.js.map +0 -1
- package/dist/memory/graph-store.d.ts.map +0 -1
- package/dist/memory/graph-store.js.map +0 -1
- package/dist/memory/hot-cache.d.ts.map +0 -1
- package/dist/memory/hot-cache.js.map +0 -1
- package/dist/memory/integrity.d.ts.map +0 -1
- package/dist/memory/integrity.js.map +0 -1
- package/dist/memory/maintenance.d.ts.map +0 -1
- package/dist/memory/maintenance.js.map +0 -1
- package/dist/memory/mmr.d.ts.map +0 -1
- package/dist/memory/mmr.js.map +0 -1
- package/dist/memory/search.d.ts.map +0 -1
- package/dist/memory/search.js.map +0 -1
- package/dist/memory/seed-user-model.d.ts.map +0 -1
- package/dist/memory/seed-user-model.js.map +0 -1
- package/dist/memory/store.d.ts.map +0 -1
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/write-queue.d.ts.map +0 -1
- package/dist/memory/write-queue.js.map +0 -1
- package/dist/secrets/auth-profiles.d.ts.map +0 -1
- package/dist/secrets/auth-profiles.js.map +0 -1
- package/dist/secrets/keychain.d.ts.map +0 -1
- package/dist/secrets/keychain.js.map +0 -1
- package/dist/secrets/resolver.d.ts.map +0 -1
- package/dist/secrets/resolver.js.map +0 -1
- package/dist/secrets/sensitivity.d.ts.map +0 -1
- package/dist/secrets/sensitivity.js.map +0 -1
- package/dist/security/integrity.d.ts.map +0 -1
- package/dist/security/integrity.js.map +0 -1
- package/dist/security/patterns.d.ts.map +0 -1
- package/dist/security/patterns.js.map +0 -1
- package/dist/security/redact.d.ts.map +0 -1
- package/dist/security/redact.js.map +0 -1
- package/dist/security/scanner.d.ts.map +0 -1
- package/dist/security/scanner.js.map +0 -1
- package/dist/tools/admin-tools.d.ts.map +0 -1
- package/dist/tools/admin-tools.js.map +0 -1
- package/dist/tools/agent-heartbeat-tools.d.ts.map +0 -1
- package/dist/tools/agent-heartbeat-tools.js.map +0 -1
- package/dist/tools/artifact-tools.d.ts.map +0 -1
- package/dist/tools/artifact-tools.js.map +0 -1
- package/dist/tools/background-task-tools.d.ts.map +0 -1
- package/dist/tools/background-task-tools.js.map +0 -1
- package/dist/tools/brain-tools.d.ts.map +0 -1
- package/dist/tools/brain-tools.js.map +0 -1
- package/dist/tools/builder-tools.d.ts.map +0 -1
- package/dist/tools/builder-tools.js.map +0 -1
- package/dist/tools/decision-reflection-tools.d.ts.map +0 -1
- package/dist/tools/decision-reflection-tools.js.map +0 -1
- package/dist/tools/external-tools.d.ts.map +0 -1
- package/dist/tools/external-tools.js.map +0 -1
- package/dist/tools/goal-tools.d.ts.map +0 -1
- package/dist/tools/goal-tools.js.map +0 -1
- package/dist/tools/mcp-server.d.ts.map +0 -1
- package/dist/tools/mcp-server.js.map +0 -1
- package/dist/tools/memory-tools.d.ts.map +0 -1
- package/dist/tools/memory-tools.js.map +0 -1
- package/dist/tools/session-tools.d.ts.map +0 -1
- package/dist/tools/session-tools.js.map +0 -1
- package/dist/tools/shared.d.ts.map +0 -1
- package/dist/tools/shared.js.map +0 -1
- package/dist/tools/team-tools.d.ts.map +0 -1
- package/dist/tools/team-tools.js.map +0 -1
- package/dist/tools/tool-meta.d.ts.map +0 -1
- package/dist/tools/tool-meta.js.map +0 -1
- package/dist/tools/vault-tools.d.ts.map +0 -1
- package/dist/tools/vault-tools.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/vault-migrations/0001-add-execution-framework.d.ts.map +0 -1
- package/dist/vault-migrations/0001-add-execution-framework.js.map +0 -1
- package/dist/vault-migrations/0002-add-agentic-communication.d.ts.map +0 -1
- package/dist/vault-migrations/0002-add-agentic-communication.js.map +0 -1
- package/dist/vault-migrations/0003-update-execution-pipeline-narration.d.ts.map +0 -1
- package/dist/vault-migrations/0003-update-execution-pipeline-narration.js.map +0 -1
- package/dist/vault-migrations/0004-backfill-schema-versions.d.ts.map +0 -1
- package/dist/vault-migrations/0004-backfill-schema-versions.js.map +0 -1
- package/dist/vault-migrations/0005-create-clementine-json.d.ts.map +0 -1
- package/dist/vault-migrations/0005-create-clementine-json.js.map +0 -1
- package/dist/vault-migrations/helpers.d.ts.map +0 -1
- package/dist/vault-migrations/helpers.js.map +0 -1
- package/dist/vault-migrations/runner.d.ts.map +0 -1
- package/dist/vault-migrations/runner.js.map +0 -1
- package/dist/vault-migrations/types.d.ts.map +0 -1
- package/dist/vault-migrations/types.js.map +0 -1
|
@@ -251,8 +251,10 @@ export declare class PersonalAssistant {
|
|
|
251
251
|
/** Fire-and-forget: extract a reusable skill from a successful execution. */
|
|
252
252
|
private extractSkillFromExecution;
|
|
253
253
|
private preRotationFlush;
|
|
254
|
-
private
|
|
255
|
-
private
|
|
254
|
+
private lastExtractionTimes;
|
|
255
|
+
private memoryExtractionKey;
|
|
256
|
+
private assessMemoryExtraction;
|
|
257
|
+
private logMemoryExtractionSkip;
|
|
256
258
|
private spawnMemoryExtraction;
|
|
257
259
|
private static readonly MEMORY_TOOL_NAMES;
|
|
258
260
|
private extractMemory;
|
package/dist/agent/assistant.js
CHANGED
|
@@ -1998,8 +1998,27 @@ You have a cost budget per message — not a hard turn limit. Work until the tas
|
|
|
1998
1998
|
: isHeartbeat
|
|
1999
1999
|
? getHeartbeatSecurityPrompt()
|
|
2000
2000
|
: getSecurityPrompt();
|
|
2001
|
-
//
|
|
2002
|
-
|
|
2001
|
+
// Model routing: keep default/profile/explicit model choices for normal
|
|
2002
|
+
// work, but send no-tool/no-memory interactive fast-path turns to Haiku.
|
|
2003
|
+
// This preserves Sonnet for memory/tool/task work while avoiding a 30s
|
|
2004
|
+
// Sonnet round trip for "hey", "thanks", and simple acknowledgements.
|
|
2005
|
+
const requestedModel = model ?? profile?.model ?? null;
|
|
2006
|
+
const lightweightModelEligible = !requestedModel
|
|
2007
|
+
&& !isHeartbeat
|
|
2008
|
+
&& !isCron
|
|
2009
|
+
&& !isPlanStep
|
|
2010
|
+
&& !isUnleashed
|
|
2011
|
+
&& toolsDisabledForCall
|
|
2012
|
+
&& turnPolicy?.retrievalTier === 'none'
|
|
2013
|
+
&& turnPolicy.effort === 'low';
|
|
2014
|
+
const resolvedModel = resolveModel(requestedModel) ?? (lightweightModelEligible ? MODELS.haiku : MODEL);
|
|
2015
|
+
const modelRouteReason = model
|
|
2016
|
+
? 'explicit'
|
|
2017
|
+
: profile?.model
|
|
2018
|
+
? 'profile'
|
|
2019
|
+
: lightweightModelEligible
|
|
2020
|
+
? 'lightweight-fast-path'
|
|
2021
|
+
: 'default';
|
|
2003
2022
|
const fallback = resolvedModel !== MODELS.sonnet ? MODELS.sonnet : undefined;
|
|
2004
2023
|
// Capture source at build time so concurrent queries don't race on the global
|
|
2005
2024
|
const capturedSource = sourceOverride;
|
|
@@ -2037,7 +2056,7 @@ You have a cost budget per message — not a hard turn limit. Work until the tas
|
|
|
2037
2056
|
}
|
|
2038
2057
|
const composioConnectedSlugs = Object.keys(composioMcpServers);
|
|
2039
2058
|
const { stable, volatile: volatilePromptPart } = this.buildSystemPrompt({
|
|
2040
|
-
isHeartbeat, cronTier: isPlanStep ? null : cronTier, retrievalContext, profile, sessionKey, model, verboseLevel, intentClassification,
|
|
2059
|
+
isHeartbeat, cronTier: isPlanStep ? null : cronTier, retrievalContext, profile, sessionKey, model: resolvedModel, verboseLevel, intentClassification,
|
|
2041
2060
|
contextTier: turnPolicy?.retrievalTier ?? (retrievalContext ? 'full' : 'core'),
|
|
2042
2061
|
toolsAvailable: !toolsDisabledForCall,
|
|
2043
2062
|
composioConnectedSlugs,
|
|
@@ -2207,6 +2226,7 @@ You have a cost budget per message — not a hard turn limit. Work until the tas
|
|
|
2207
2226
|
const clementineToolAllowlistCount = clementineToolAllowlist === '*'
|
|
2208
2227
|
? CLEMENTINE_ALL_TOOL_NAMES.length
|
|
2209
2228
|
: clementineToolAllowlist.split(',').filter(Boolean).length;
|
|
2229
|
+
const loggedToolRoute = toolsDisabledForCall ? emptyToolRoute() : toolRoute;
|
|
2210
2230
|
if (allowedTools.length > TOOL_SURFACE_WARN_THRESHOLD) {
|
|
2211
2231
|
logger.warn({
|
|
2212
2232
|
sessionKey,
|
|
@@ -2218,16 +2238,20 @@ You have a cost budget per message — not a hard turn limit. Work until the tas
|
|
|
2218
2238
|
}, 'SDK allowed tool surface above warning threshold');
|
|
2219
2239
|
}
|
|
2220
2240
|
logger.info({
|
|
2221
|
-
bundles:
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2241
|
+
bundles: loggedToolRoute.bundles,
|
|
2242
|
+
candidateBundles: toolsDisabledForCall && toolRoute.bundles.length > 0 ? toolRoute.bundles : undefined,
|
|
2243
|
+
fullSurface: loggedToolRoute.fullSurface,
|
|
2244
|
+
candidateFullSurface: toolsDisabledForCall && toolRoute.fullSurface ? true : undefined,
|
|
2245
|
+
allExternalMcpServers: !toolsDisabledForCall && toolRoute.externalMcpServers === undefined,
|
|
2246
|
+
allComposioToolkits: !toolsDisabledForCall && toolRoute.composioToolkits === undefined,
|
|
2247
|
+
externalMcpServers: toolsDisabledForCall ? [] : toolRoute.externalMcpServers,
|
|
2248
|
+
composioToolkits: toolsDisabledForCall ? [] : toolRoute.composioToolkits,
|
|
2227
2249
|
mcpServerNames,
|
|
2228
2250
|
allowedToolCount: toolsDisabledForCall ? 0 : allowedTools.length,
|
|
2229
2251
|
clementineToolAllowlistCount: toolsDisabledForCall ? 0 : clementineToolAllowlistCount,
|
|
2230
|
-
clementineToolAllowlistMode: clementineToolAllowlist === '*' ? 'all' : 'scoped',
|
|
2252
|
+
clementineToolAllowlistMode: toolsDisabledForCall ? 'disabled' : clementineToolAllowlist === '*' ? 'all' : 'scoped',
|
|
2253
|
+
model: resolvedModel,
|
|
2254
|
+
modelRouteReason,
|
|
2231
2255
|
toolsDisabledForCall,
|
|
2232
2256
|
isolateClaudeConfig,
|
|
2233
2257
|
inheritFullClaudeEnv: shouldInheritClaudeEnv,
|
|
@@ -2848,12 +2872,16 @@ You have a cost budget per message — not a hard turn limit. Work until the tas
|
|
|
2848
2872
|
logger.warn({ err, sessionKey: key }, 'Transcript save failed');
|
|
2849
2873
|
}
|
|
2850
2874
|
}
|
|
2851
|
-
// Fire background memory extraction (non-blocking)
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2875
|
+
// Fire background memory extraction (non-blocking). Skips are logged with
|
|
2876
|
+
// structured reasons so memory gaps are diagnosable without reading chats.
|
|
2877
|
+
if (responseText && !responseText.startsWith('Error:')) {
|
|
2878
|
+
const extractionDecision = this.assessMemoryExtraction(text, responseText, key, profile);
|
|
2879
|
+
if (extractionDecision.ok) {
|
|
2880
|
+
this.spawnMemoryExtraction(text, responseText, key, profile).catch(err => logger.debug({ err }, 'Memory extraction failed'));
|
|
2881
|
+
}
|
|
2882
|
+
else {
|
|
2883
|
+
this.logMemoryExtractionSkip(extractionDecision.reason, text, responseText, key, profile);
|
|
2884
|
+
}
|
|
2857
2885
|
}
|
|
2858
2886
|
// Score outcome-driven salience: for the chunks we retrieved this turn,
|
|
2859
2887
|
// check which actually showed up in the response and adjust their
|
|
@@ -3065,6 +3093,19 @@ You have a cost budget per message — not a hard turn limit. Work until the tas
|
|
|
3065
3093
|
? ((sdkOptions.allowedTools ?? [])
|
|
3066
3094
|
.filter(t => typeof t === 'string' && t.startsWith(`mcp__${TOOLS_SERVER}__`)).length)
|
|
3067
3095
|
: 0;
|
|
3096
|
+
const lightweightTraceEligible = !model
|
|
3097
|
+
&& !profile?.model
|
|
3098
|
+
&& sdkOptions.model === MODELS.haiku
|
|
3099
|
+
&& effectiveTurnPolicy?.disableAllTools
|
|
3100
|
+
&& rawContext.tier === 'none'
|
|
3101
|
+
&& effectiveTurnPolicy.effort === 'low';
|
|
3102
|
+
const modelRouteReason = model
|
|
3103
|
+
? 'explicit'
|
|
3104
|
+
: profile?.model
|
|
3105
|
+
? 'profile'
|
|
3106
|
+
: lightweightTraceEligible
|
|
3107
|
+
? 'lightweight-fast-path'
|
|
3108
|
+
: 'default';
|
|
3068
3109
|
const serverCount = sdkOptions.mcpServers ? Object.keys(sdkOptions.mcpServers).length : 0;
|
|
3069
3110
|
logAuditJsonl({
|
|
3070
3111
|
event_type: 'turn_trace',
|
|
@@ -3083,6 +3124,8 @@ You have a cost budget per message — not a hard turn limit. Work until the tas
|
|
|
3083
3124
|
estimated_tokens: totalEstimate,
|
|
3084
3125
|
remaining_tokens: remainingTokens,
|
|
3085
3126
|
max_turns: sdkOptions.maxTurns,
|
|
3127
|
+
model: sdkOptions.model,
|
|
3128
|
+
model_route_reason: modelRouteReason,
|
|
3086
3129
|
effort: sdkOptions.effort,
|
|
3087
3130
|
});
|
|
3088
3131
|
}
|
|
@@ -4149,14 +4192,15 @@ You have a cost budget per message — not a hard turn limit. Work until the tas
|
|
|
4149
4192
|
catch { /* non-fatal */ }
|
|
4150
4193
|
}
|
|
4151
4194
|
// ── Auto-Memory Extraction ────────────────────────────────────────
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
if (
|
|
4158
|
-
return false;
|
|
4159
|
-
// Only skip pure greetings with no substance at all
|
|
4195
|
+
lastExtractionTimes = new Map();
|
|
4196
|
+
memoryExtractionKey(sessionKey, profile) {
|
|
4197
|
+
return `${profile?.slug ?? 'global'}:${sessionKey ?? 'no-session'}`;
|
|
4198
|
+
}
|
|
4199
|
+
assessMemoryExtraction(prompt, response, sessionKey, profile) {
|
|
4200
|
+
if (!this.memoryStore)
|
|
4201
|
+
return { ok: false, reason: 'no_memory_store' };
|
|
4202
|
+
// Only skip pure greetings with no substance at all. Check this before
|
|
4203
|
+
// length so "hey" is diagnosable as intent, not generic shortness.
|
|
4160
4204
|
const pureGreetings = [
|
|
4161
4205
|
'hello', 'hi', 'hey', 'thanks', 'thank you',
|
|
4162
4206
|
'ok', 'okay', 'sure', 'got it', 'sounds good',
|
|
@@ -4164,20 +4208,54 @@ You have a cost budget per message — not a hard turn limit. Work until the tas
|
|
|
4164
4208
|
];
|
|
4165
4209
|
const lower = prompt.toLowerCase().trim();
|
|
4166
4210
|
if (pureGreetings.some((g) => lower === g || lower === g + '!' || lower === g + '.')) {
|
|
4167
|
-
return false;
|
|
4211
|
+
return { ok: false, reason: 'pure_greeting' };
|
|
4212
|
+
}
|
|
4213
|
+
if (prompt.length < AUTO_MEMORY_MIN_LENGTH || response.length < 100) {
|
|
4214
|
+
return { ok: false, reason: 'too_short' };
|
|
4168
4215
|
}
|
|
4169
|
-
// Rate limit
|
|
4216
|
+
// Rate limit per session/agent. The old process-wide throttle meant one
|
|
4217
|
+
// active chat could suppress memory extraction for unrelated agents.
|
|
4170
4218
|
const now = Date.now();
|
|
4171
|
-
|
|
4172
|
-
|
|
4173
|
-
|
|
4174
|
-
|
|
4219
|
+
const key = this.memoryExtractionKey(sessionKey, profile);
|
|
4220
|
+
const last = this.lastExtractionTimes.get(key) ?? 0;
|
|
4221
|
+
if (now - last < 45_000)
|
|
4222
|
+
return { ok: false, reason: 'rate_limited' };
|
|
4223
|
+
this.lastExtractionTimes.set(key, now);
|
|
4224
|
+
return { ok: true };
|
|
4225
|
+
}
|
|
4226
|
+
logMemoryExtractionSkip(reason, userMessage, assistantResponse, sessionKey, profile) {
|
|
4227
|
+
logger.debug({
|
|
4228
|
+
reason,
|
|
4229
|
+
sessionKey,
|
|
4230
|
+
agentSlug: profile?.slug,
|
|
4231
|
+
promptChars: userMessage.length,
|
|
4232
|
+
responseChars: assistantResponse.length,
|
|
4233
|
+
}, 'Auto-memory extraction skipped');
|
|
4234
|
+
if (!this.memoryStore)
|
|
4235
|
+
return;
|
|
4236
|
+
try {
|
|
4237
|
+
this.memoryStore.logExtraction({
|
|
4238
|
+
sessionKey: sessionKey ?? 'unknown',
|
|
4239
|
+
userMessage: userMessage.slice(0, 500),
|
|
4240
|
+
toolName: 'auto_memory_skip',
|
|
4241
|
+
toolInput: JSON.stringify({
|
|
4242
|
+
reason,
|
|
4243
|
+
promptChars: userMessage.length,
|
|
4244
|
+
responseChars: assistantResponse.length,
|
|
4245
|
+
}),
|
|
4246
|
+
extractedAt: new Date().toISOString(),
|
|
4247
|
+
status: `skipped:${reason}`,
|
|
4248
|
+
agentSlug: profile?.slug,
|
|
4249
|
+
});
|
|
4250
|
+
}
|
|
4251
|
+
catch { /* telemetry only */ }
|
|
4175
4252
|
}
|
|
4176
4253
|
async spawnMemoryExtraction(userMessage, assistantResponse, sessionKey, profile) {
|
|
4177
4254
|
// Guard: skip memory extraction if the user message looks like injection
|
|
4178
4255
|
const memScan = scanner.scan(userMessage);
|
|
4179
4256
|
if (memScan.verdict === 'block') {
|
|
4180
4257
|
logger.info('Skipping memory extraction — message was flagged as injection');
|
|
4258
|
+
this.logMemoryExtractionSkip('injection_blocked', userMessage, assistantResponse, sessionKey, profile);
|
|
4181
4259
|
return;
|
|
4182
4260
|
}
|
|
4183
4261
|
let currentMemory = '';
|
|
@@ -10,6 +10,37 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import type { SelfImproveConfig, SelfImproveExperiment, SelfImproveState } from '../types.js';
|
|
12
12
|
import type { PersonalAssistant } from './assistant.js';
|
|
13
|
+
export declare const USER_MODEL_SLOT_KEYS: readonly ["user_facts", "goals", "relationships", "agent_persona"];
|
|
14
|
+
export type UserModelSlotKey = typeof USER_MODEL_SLOT_KEYS[number];
|
|
15
|
+
export interface SelfImproveEvidenceSnapshot {
|
|
16
|
+
feedbackCreatedAt?: string[];
|
|
17
|
+
reflectionCreatedAt?: string[];
|
|
18
|
+
cronErrorStartedAt?: string[];
|
|
19
|
+
cronReflectionAt?: string[];
|
|
20
|
+
triggerUpdatedAt?: string[];
|
|
21
|
+
triggerCount?: number;
|
|
22
|
+
userModelNeedsSeed?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function isPlateauExperiment(entry: Partial<SelfImproveExperiment>): boolean;
|
|
25
|
+
export declare function latestPlateauTime(history: Array<Partial<SelfImproveExperiment>>): number;
|
|
26
|
+
export declare function newestSelfImproveEvidenceTime(evidence: SelfImproveEvidenceSnapshot): number;
|
|
27
|
+
export declare function shouldSkipSelfImproveForPlateau(history: Array<Partial<SelfImproveExperiment>>, evidence: SelfImproveEvidenceSnapshot): {
|
|
28
|
+
skip: boolean;
|
|
29
|
+
reason?: string;
|
|
30
|
+
};
|
|
31
|
+
export declare function shouldAppendPlateauMarker(history: Array<Partial<SelfImproveExperiment>>, nowMs?: number, windowMs?: number): boolean;
|
|
32
|
+
export declare function reconcileSelfImproveStateSnapshot(state: SelfImproveState, actualPending: number, opts?: {
|
|
33
|
+
nowMs?: number;
|
|
34
|
+
maxDurationMs?: number;
|
|
35
|
+
graceMs?: number;
|
|
36
|
+
}): {
|
|
37
|
+
state: SelfImproveState;
|
|
38
|
+
changed: boolean;
|
|
39
|
+
diagnostics: string[];
|
|
40
|
+
};
|
|
41
|
+
export declare function normalizeUserModelSlots(slots: unknown): Partial<Record<UserModelSlotKey, string>>;
|
|
42
|
+
export declare function sanitizeUserModelFrontmatter(frontmatterYaml: string): string;
|
|
43
|
+
export declare function buildUserModelMarkdown(frontmatterYaml: string, slots: Partial<Record<UserModelSlotKey, string>>, updatedAt?: string): string;
|
|
13
44
|
export declare class SelfImproveLoop {
|
|
14
45
|
private config;
|
|
15
46
|
private assistant;
|
|
@@ -18,6 +49,9 @@ export declare class SelfImproveLoop {
|
|
|
18
49
|
/** Run a focused self-improvement cycle for a specific agent. */
|
|
19
50
|
runForAgent(agentSlug: string, onProposal?: (experiment: SelfImproveExperiment) => Promise<void>): Promise<SelfImproveState>;
|
|
20
51
|
private gatherMetrics;
|
|
52
|
+
private evidenceSnapshot;
|
|
53
|
+
private pendingTriggerEvidence;
|
|
54
|
+
private userModelNeedsSeed;
|
|
21
55
|
private hypothesize;
|
|
22
56
|
private readCurrentState;
|
|
23
57
|
private evaluate;
|