agent-world 0.12.3 → 0.15.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/README.md +105 -17
- package/dist/cli/commands.d.ts +7 -1
- package/dist/cli/commands.js +27 -10
- package/dist/cli/hitl.d.ts +9 -2
- package/dist/cli/hitl.js +61 -20
- package/dist/cli/index.js +250 -96
- package/dist/cli/system-events.d.ts +27 -0
- package/dist/cli/system-events.js +63 -0
- package/dist/core/activity-tracker.d.ts +38 -2
- package/dist/core/activity-tracker.d.ts.map +1 -1
- package/dist/core/activity-tracker.js +62 -9
- package/dist/core/activity-tracker.js.map +1 -1
- package/dist/core/anthropic-direct.d.ts +2 -0
- package/dist/core/anthropic-direct.d.ts.map +1 -1
- package/dist/core/anthropic-direct.js +43 -1
- package/dist/core/anthropic-direct.js.map +1 -1
- package/dist/core/chat-constants.d.ts +12 -0
- package/dist/core/chat-constants.d.ts.map +1 -1
- package/dist/core/chat-constants.js +5 -0
- package/dist/core/chat-constants.js.map +1 -1
- package/dist/core/create-agent-tool.d.ts +28 -25
- package/dist/core/create-agent-tool.d.ts.map +1 -1
- package/dist/core/create-agent-tool.js +264 -141
- package/dist/core/create-agent-tool.js.map +1 -1
- package/dist/core/events/index.d.ts +5 -2
- package/dist/core/events/index.d.ts.map +1 -1
- package/dist/core/events/index.js +5 -2
- package/dist/core/events/index.js.map +1 -1
- package/dist/core/events/memory-manager.d.ts +26 -1
- package/dist/core/events/memory-manager.d.ts.map +1 -1
- package/dist/core/events/memory-manager.js +877 -72
- package/dist/core/events/memory-manager.js.map +1 -1
- package/dist/core/events/orchestrator.d.ts +8 -0
- package/dist/core/events/orchestrator.d.ts.map +1 -1
- package/dist/core/events/orchestrator.js +214 -38
- package/dist/core/events/orchestrator.js.map +1 -1
- package/dist/core/events/persistence.d.ts +21 -14
- package/dist/core/events/persistence.d.ts.map +1 -1
- package/dist/core/events/persistence.js +100 -61
- package/dist/core/events/persistence.js.map +1 -1
- package/dist/core/events/publishers.d.ts +13 -16
- package/dist/core/events/publishers.d.ts.map +1 -1
- package/dist/core/events/publishers.js +54 -55
- package/dist/core/events/publishers.js.map +1 -1
- package/dist/core/events/subscribers.d.ts +17 -14
- package/dist/core/events/subscribers.d.ts.map +1 -1
- package/dist/core/events/subscribers.js +68 -147
- package/dist/core/events/subscribers.js.map +1 -1
- package/dist/core/events/title-scheduler.d.ts +27 -0
- package/dist/core/events/title-scheduler.d.ts.map +1 -0
- package/dist/core/events/title-scheduler.js +135 -0
- package/dist/core/events/title-scheduler.js.map +1 -0
- package/dist/core/events/tool-bridge-logging.d.ts +4 -1
- package/dist/core/events/tool-bridge-logging.d.ts.map +1 -1
- package/dist/core/events/tool-bridge-logging.js +112 -13
- package/dist/core/events/tool-bridge-logging.js.map +1 -1
- package/dist/core/events-metadata.d.ts.map +1 -1
- package/dist/core/events-metadata.js +8 -4
- package/dist/core/events-metadata.js.map +1 -1
- package/dist/core/export.d.ts +1 -1
- package/dist/core/export.d.ts.map +1 -1
- package/dist/core/export.js +2 -15
- package/dist/core/export.js.map +1 -1
- package/dist/core/feature-path-logging.d.ts +50 -0
- package/dist/core/feature-path-logging.d.ts.map +1 -0
- package/dist/core/feature-path-logging.js +130 -0
- package/dist/core/feature-path-logging.js.map +1 -0
- package/dist/core/file-tools.d.ts +57 -1
- package/dist/core/file-tools.d.ts.map +1 -1
- package/dist/core/file-tools.js +329 -29
- package/dist/core/file-tools.js.map +1 -1
- package/dist/core/google-direct.d.ts +6 -1
- package/dist/core/google-direct.d.ts.map +1 -1
- package/dist/core/google-direct.js +76 -7
- package/dist/core/google-direct.js.map +1 -1
- package/dist/core/heartbeat.d.ts +34 -0
- package/dist/core/heartbeat.d.ts.map +1 -0
- package/dist/core/heartbeat.js +153 -0
- package/dist/core/heartbeat.js.map +1 -0
- package/dist/core/hitl-tool.d.ts +73 -0
- package/dist/core/hitl-tool.d.ts.map +1 -0
- package/dist/core/hitl-tool.js +284 -0
- package/dist/core/hitl-tool.js.map +1 -0
- package/dist/core/hitl.d.ts +85 -8
- package/dist/core/hitl.d.ts.map +1 -1
- package/dist/core/hitl.js +375 -61
- package/dist/core/hitl.js.map +1 -1
- package/dist/core/index.d.ts +12 -7
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +11 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/llm-manager.d.ts +17 -0
- package/dist/core/llm-manager.d.ts.map +1 -1
- package/dist/core/llm-manager.js +335 -43
- package/dist/core/llm-manager.js.map +1 -1
- package/dist/core/load-skill-tool.d.ts +36 -3
- package/dist/core/load-skill-tool.d.ts.map +1 -1
- package/dist/core/load-skill-tool.js +807 -93
- package/dist/core/load-skill-tool.js.map +1 -1
- package/dist/core/logger.d.ts +14 -0
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +15 -0
- package/dist/core/logger.js.map +1 -1
- package/dist/core/managers.d.ts +41 -52
- package/dist/core/managers.d.ts.map +1 -1
- package/dist/core/managers.js +422 -533
- package/dist/core/managers.js.map +1 -1
- package/dist/core/mcp-server-registry.d.ts +19 -2
- package/dist/core/mcp-server-registry.d.ts.map +1 -1
- package/dist/core/mcp-server-registry.js +168 -12
- package/dist/core/mcp-server-registry.js.map +1 -1
- package/dist/core/message-cutoff.d.ts +29 -0
- package/dist/core/message-cutoff.d.ts.map +1 -0
- package/dist/core/message-cutoff.js +63 -0
- package/dist/core/message-cutoff.js.map +1 -0
- package/dist/core/message-edit-manager.d.ts +54 -0
- package/dist/core/message-edit-manager.d.ts.map +1 -0
- package/dist/core/message-edit-manager.js +602 -0
- package/dist/core/message-edit-manager.js.map +1 -0
- package/dist/core/message-prep.d.ts +2 -0
- package/dist/core/message-prep.d.ts.map +1 -1
- package/dist/core/message-prep.js +39 -12
- package/dist/core/message-prep.js.map +1 -1
- package/dist/core/message-processing-control.d.ts +1 -0
- package/dist/core/message-processing-control.d.ts.map +1 -1
- package/dist/core/message-processing-control.js +23 -6
- package/dist/core/message-processing-control.js.map +1 -1
- package/dist/core/openai-direct.d.ts +9 -3
- package/dist/core/openai-direct.d.ts.map +1 -1
- package/dist/core/openai-direct.js +267 -33
- package/dist/core/openai-direct.js.map +1 -1
- package/dist/core/optional-tracers/opik-runtime.d.ts +32 -0
- package/dist/core/optional-tracers/opik-runtime.d.ts.map +1 -0
- package/dist/core/optional-tracers/opik-runtime.js +141 -0
- package/dist/core/optional-tracers/opik-runtime.js.map +1 -0
- package/dist/core/queue-manager.d.ts +84 -0
- package/dist/core/queue-manager.d.ts.map +1 -0
- package/dist/core/queue-manager.js +814 -0
- package/dist/core/queue-manager.js.map +1 -0
- package/dist/core/reasoning-controls.d.ts +30 -0
- package/dist/core/reasoning-controls.d.ts.map +1 -0
- package/dist/core/reasoning-controls.js +118 -0
- package/dist/core/reasoning-controls.js.map +1 -0
- package/dist/core/reliability-config.d.ts +82 -0
- package/dist/core/reliability-config.d.ts.map +1 -0
- package/dist/core/reliability-config.js +106 -0
- package/dist/core/reliability-config.js.map +1 -0
- package/dist/core/reliability-runtime.d.ts +53 -0
- package/dist/core/reliability-runtime.d.ts.map +1 -0
- package/dist/core/reliability-runtime.js +92 -0
- package/dist/core/reliability-runtime.js.map +1 -0
- package/dist/core/security/guardrails.d.ts +21 -0
- package/dist/core/security/guardrails.d.ts.map +1 -0
- package/dist/core/security/guardrails.js +111 -0
- package/dist/core/security/guardrails.js.map +1 -0
- package/dist/core/send-message-tool.d.ts +79 -0
- package/dist/core/send-message-tool.d.ts.map +1 -0
- package/dist/core/send-message-tool.js +222 -0
- package/dist/core/send-message-tool.js.map +1 -0
- package/dist/core/shell-cmd-tool.d.ts +82 -1
- package/dist/core/shell-cmd-tool.d.ts.map +1 -1
- package/dist/core/shell-cmd-tool.js +854 -42
- package/dist/core/shell-cmd-tool.js.map +1 -1
- package/dist/core/skill-registry.d.ts +2 -0
- package/dist/core/skill-registry.d.ts.map +1 -1
- package/dist/core/skill-registry.js +52 -2
- package/dist/core/skill-registry.js.map +1 -1
- package/dist/core/storage/eventStorage/fileEventStorage.d.ts +5 -0
- package/dist/core/storage/eventStorage/fileEventStorage.d.ts.map +1 -1
- package/dist/core/storage/eventStorage/fileEventStorage.js +61 -0
- package/dist/core/storage/eventStorage/fileEventStorage.js.map +1 -1
- package/dist/core/storage/eventStorage/memoryEventStorage.d.ts +5 -0
- package/dist/core/storage/eventStorage/memoryEventStorage.d.ts.map +1 -1
- package/dist/core/storage/eventStorage/memoryEventStorage.js +34 -0
- package/dist/core/storage/eventStorage/memoryEventStorage.js.map +1 -1
- package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts +1 -0
- package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts.map +1 -1
- package/dist/core/storage/eventStorage/sqliteEventStorage.js +19 -2
- package/dist/core/storage/eventStorage/sqliteEventStorage.js.map +1 -1
- package/dist/core/storage/eventStorage/types.d.ts +6 -0
- package/dist/core/storage/eventStorage/types.d.ts.map +1 -1
- package/dist/core/storage/eventStorage/types.js +1 -0
- package/dist/core/storage/eventStorage/types.js.map +1 -1
- package/dist/core/storage/eventStorage/validation.d.ts.map +1 -1
- package/dist/core/storage/eventStorage/validation.js +2 -1
- package/dist/core/storage/eventStorage/validation.js.map +1 -1
- package/dist/core/storage/github-world-import.d.ts +84 -0
- package/dist/core/storage/github-world-import.d.ts.map +1 -0
- package/dist/core/storage/github-world-import.js +365 -0
- package/dist/core/storage/github-world-import.js.map +1 -0
- package/dist/core/storage/memory-storage.d.ts +19 -8
- package/dist/core/storage/memory-storage.d.ts.map +1 -1
- package/dist/core/storage/memory-storage.js +147 -49
- package/dist/core/storage/memory-storage.js.map +1 -1
- package/dist/core/storage/queue-storage.d.ts +1 -0
- package/dist/core/storage/queue-storage.d.ts.map +1 -1
- package/dist/core/storage/queue-storage.js +3 -2
- package/dist/core/storage/queue-storage.js.map +1 -1
- package/dist/core/storage/sqlite-storage.d.ts +14 -9
- package/dist/core/storage/sqlite-storage.d.ts.map +1 -1
- package/dist/core/storage/sqlite-storage.js +131 -154
- package/dist/core/storage/sqlite-storage.js.map +1 -1
- package/dist/core/storage/storage-factory.d.ts +3 -0
- package/dist/core/storage/storage-factory.d.ts.map +1 -1
- package/dist/core/storage/storage-factory.js +175 -89
- package/dist/core/storage/storage-factory.js.map +1 -1
- package/dist/core/storage/world-storage.d.ts +1 -1
- package/dist/core/storage/world-storage.d.ts.map +1 -1
- package/dist/core/storage/world-storage.js +5 -1
- package/dist/core/storage/world-storage.js.map +1 -1
- package/dist/core/storage-init.d.ts +11 -0
- package/dist/core/storage-init.d.ts.map +1 -0
- package/dist/core/storage-init.js +122 -0
- package/dist/core/storage-init.js.map +1 -0
- package/dist/core/subscription.d.ts +8 -1
- package/dist/core/subscription.d.ts.map +1 -1
- package/dist/core/subscription.js +130 -23
- package/dist/core/subscription.js.map +1 -1
- package/dist/core/tool-approval.d.ts +45 -0
- package/dist/core/tool-approval.d.ts.map +1 -0
- package/dist/core/tool-approval.js +223 -0
- package/dist/core/tool-approval.js.map +1 -0
- package/dist/core/tool-execution-envelope.d.ts +87 -0
- package/dist/core/tool-execution-envelope.d.ts.map +1 -0
- package/dist/core/tool-execution-envelope.js +168 -0
- package/dist/core/tool-execution-envelope.js.map +1 -0
- package/dist/core/tool-utils.d.ts +9 -2
- package/dist/core/tool-utils.d.ts.map +1 -1
- package/dist/core/tool-utils.js +122 -28
- package/dist/core/tool-utils.js.map +1 -1
- package/dist/core/types.d.ts +69 -36
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +3 -2
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils.d.ts +16 -0
- package/dist/core/utils.d.ts.map +1 -1
- package/dist/core/utils.js +99 -24
- package/dist/core/utils.js.map +1 -1
- package/dist/core/web-fetch-tool.d.ts +72 -0
- package/dist/core/web-fetch-tool.d.ts.map +1 -0
- package/dist/core/web-fetch-tool.js +491 -0
- package/dist/core/web-fetch-tool.js.map +1 -0
- package/dist/core/world-registry.d.ts +84 -0
- package/dist/core/world-registry.d.ts.map +1 -0
- package/dist/core/world-registry.js +247 -0
- package/dist/core/world-registry.js.map +1 -0
- package/dist/public/assets/index-Be-1xtV-.js +104 -0
- package/dist/public/assets/index-tsDdiXDU.css +1 -0
- package/dist/public/index.html +2 -2
- package/dist/public/mcp-sandbox-proxy.html +148 -0
- package/dist/server/api.js +288 -58
- package/dist/server/error-response.d.ts +27 -0
- package/dist/server/error-response.js +77 -0
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.js +6 -2
- package/dist/server/sse-handler.d.ts +13 -2
- package/dist/server/sse-handler.js +194 -26
- package/migrations/0015_add_message_queue.sql +36 -0
- package/migrations/0016_add_world_heartbeat.sql +13 -0
- package/migrations/0017_add_title_provenance.sql +7 -0
- package/package.json +31 -10
- package/dist/public/assets/index-BO20H4xt.js +0 -96
- package/dist/public/assets/index-ETY7W5_S.css +0 -1
|
@@ -1,210 +1,333 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Create Agent Tool Module - Built-in tool for approval-gated agent creation
|
|
2
|
+
* Create Agent Tool Module - Built-in tool for approval-gated agent creation
|
|
3
3
|
*
|
|
4
4
|
* Purpose:
|
|
5
|
-
* -
|
|
5
|
+
* - Expose a built-in `create_agent` tool that creates one new agent after explicit user approval.
|
|
6
6
|
*
|
|
7
7
|
* Key Features:
|
|
8
|
-
* - Requires `name` and supports optional `autoReply`, `role`, and `nextAgent`
|
|
9
|
-
* - Enforces
|
|
10
|
-
* -
|
|
11
|
-
* -
|
|
12
|
-
* - Returns structured JSON payloads for success, denial, and error outcomes.
|
|
8
|
+
* - Requires `name` and supports optional `autoReply`, `role`, and `nextAgent` inputs.
|
|
9
|
+
* - Enforces HITL approval with deterministic deny/timeout handling before persistence.
|
|
10
|
+
* - Generates deterministic system prompt text for multi-agent routing.
|
|
11
|
+
* - Uses world-level chat provider/model settings with deterministic fallbacks.
|
|
13
12
|
*
|
|
14
|
-
* Notes
|
|
15
|
-
* - Uses `
|
|
16
|
-
* -
|
|
17
|
-
* -
|
|
13
|
+
* Implementation Notes:
|
|
14
|
+
* - Uses manager-level `createAgent` as the persistence boundary.
|
|
15
|
+
* - Returns deterministic JSON-string payloads for success, denial, and errors.
|
|
16
|
+
* - Keeps runtime contract canonical (`autoReply`, `nextAgent`) while aliases are handled upstream.
|
|
18
17
|
*
|
|
19
18
|
* Recent Changes:
|
|
20
|
-
* - 2026-
|
|
19
|
+
* - 2026-03-12: Shared tool approval flow now persists durable approval prompt/resolution messages for replay-safe denial history.
|
|
20
|
+
* - 2026-03-12: Added `read` permission level guard — returns a blocked-tool error when world toolPermission is 'read'.
|
|
21
|
+
* - 2026-02-20: Added post-create HITL informational confirmation (`Agent <name> has been created`) with `refreshAfterDismiss` metadata set to true.
|
|
22
|
+
* - 2026-02-20: Pre-claim agent creation slot before approval dialog to prevent parallel-call race where both calls pass approval before either calls createAgent.
|
|
23
|
+
* - 2026-02-20: Updated tool create path to allow manager-level create during the current in-flight world processing turn.
|
|
24
|
+
* - 2026-02-20: Updated `create_agent` default behavior so omitted `autoReply` resolves to `false`.
|
|
25
|
+
* - 2026-02-20: Added initial built-in `create_agent` tool implementation with mandatory approval gate.
|
|
21
26
|
*/
|
|
22
27
|
import { requestWorldOption } from './hitl.js';
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
28
|
+
import { requestToolApproval } from './tool-approval.js';
|
|
29
|
+
import { createAgent, claimAgentCreationSlot } from './managers.js';
|
|
30
|
+
import { getEnvValueFromText } from './utils.js';
|
|
31
|
+
import { LLMProvider, EventType } from './types.js';
|
|
32
|
+
import { publishEvent } from './events/publishers.js';
|
|
26
33
|
const APPROVAL_OPTION_YES = 'yes';
|
|
27
34
|
const APPROVAL_OPTION_NO = 'no';
|
|
35
|
+
const INFO_OPTION_DISMISS = 'dismiss';
|
|
36
|
+
const DEFAULT_NEXT_AGENT = 'human';
|
|
28
37
|
const DEFAULT_PROVIDER = LLMProvider.OPENAI;
|
|
29
38
|
const DEFAULT_MODEL = 'gpt-4';
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
function normalizeSingleLineText(value) {
|
|
33
|
-
if (typeof value !== 'string')
|
|
34
|
-
return '';
|
|
35
|
-
return value.replace(/\s+/g, ' ').trim();
|
|
39
|
+
function stringifyResult(payload) {
|
|
40
|
+
return JSON.stringify(payload);
|
|
36
41
|
}
|
|
37
|
-
function
|
|
38
|
-
|
|
39
|
-
if (!normalized)
|
|
40
|
-
return '';
|
|
41
|
-
return normalized.slice(0, MAX_ROLE_LENGTH);
|
|
42
|
-
}
|
|
43
|
-
function resolveNextAgent(nextAgent) {
|
|
44
|
-
const normalized = normalizeSingleLineText(nextAgent);
|
|
45
|
-
if (!normalized)
|
|
46
|
-
return DEFAULT_NEXT_AGENT;
|
|
47
|
-
const stripped = normalized.startsWith('@') ? normalized.slice(1) : normalized;
|
|
48
|
-
const token = toKebabCase(stripped);
|
|
49
|
-
return token || DEFAULT_NEXT_AGENT;
|
|
42
|
+
function normalizeWhitespace(value) {
|
|
43
|
+
return value.replace(/\s+/g, ' ').trim();
|
|
50
44
|
}
|
|
51
|
-
function
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (configured && allProviders.has(configured)) {
|
|
55
|
-
return configured;
|
|
45
|
+
function validateAndNormalizeArgs(args) {
|
|
46
|
+
if (typeof args.name !== 'string' || !args.name.trim()) {
|
|
47
|
+
return { valid: false, error: 'Missing required parameter: name' };
|
|
56
48
|
}
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
if (args.autoReply !== undefined && typeof args.autoReply !== 'boolean') {
|
|
50
|
+
return { valid: false, error: 'Parameter autoReply must be a boolean when provided' };
|
|
51
|
+
}
|
|
52
|
+
if (args.role !== undefined && typeof args.role !== 'string') {
|
|
53
|
+
return { valid: false, error: 'Parameter role must be a string when provided' };
|
|
54
|
+
}
|
|
55
|
+
if (args.nextAgent !== undefined && typeof args.nextAgent !== 'string') {
|
|
56
|
+
return { valid: false, error: 'Parameter nextAgent must be a string when provided' };
|
|
57
|
+
}
|
|
58
|
+
const name = normalizeWhitespace(args.name);
|
|
59
|
+
const autoReply = args.autoReply ?? false;
|
|
60
|
+
const role = typeof args.role === 'string' && args.role.trim()
|
|
61
|
+
? normalizeWhitespace(args.role)
|
|
62
|
+
: null;
|
|
63
|
+
const nextAgent = typeof args.nextAgent === 'string' && args.nextAgent.trim()
|
|
64
|
+
? normalizeWhitespace(args.nextAgent)
|
|
65
|
+
: DEFAULT_NEXT_AGENT;
|
|
66
|
+
return {
|
|
67
|
+
valid: true,
|
|
68
|
+
args: { name, autoReply, role, nextAgent },
|
|
69
|
+
};
|
|
62
70
|
}
|
|
63
|
-
function
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
`You are agent ${name}
|
|
67
|
-
|
|
68
|
-
'Always respond in exactly this structure:',
|
|
69
|
-
`@${nextAgent}`,
|
|
70
|
-
'{Your response}',
|
|
71
|
-
].join('\n');
|
|
71
|
+
function buildDeterministicSystemPrompt(name, role, nextAgent) {
|
|
72
|
+
const firstLine = role
|
|
73
|
+
? `You are agent ${name}. Your role is ${role}.`
|
|
74
|
+
: `You are agent ${name}.`;
|
|
75
|
+
return `${firstLine}\n\nAlways respond in exactly this structure:\n@${nextAgent}\n{Your response}`;
|
|
72
76
|
}
|
|
73
|
-
function
|
|
74
|
-
|
|
77
|
+
function resolveProviderAndModel(world) {
|
|
78
|
+
const provider = typeof world?.chatLLMProvider === 'string' && world.chatLLMProvider.trim()
|
|
79
|
+
? world.chatLLMProvider
|
|
80
|
+
: DEFAULT_PROVIDER;
|
|
81
|
+
const model = typeof world?.chatLLMModel === 'string' && world.chatLLMModel.trim()
|
|
82
|
+
? world.chatLLMModel.trim()
|
|
83
|
+
: DEFAULT_MODEL;
|
|
84
|
+
return { provider: provider, model };
|
|
75
85
|
}
|
|
76
|
-
function
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
async function requestCreateAgentApproval(options) {
|
|
87
|
+
const approval = await requestToolApproval({
|
|
88
|
+
world: options.world,
|
|
89
|
+
title: `Create agent ${options.name}?`,
|
|
90
|
+
message: [
|
|
91
|
+
`Create a new agent named "${options.name}"?`,
|
|
92
|
+
`Auto reply: ${options.autoReply ? 'enabled' : 'disabled'}`,
|
|
93
|
+
`Role: ${options.role ?? '(none)'}`,
|
|
94
|
+
`Next agent: ${options.nextAgent}`,
|
|
95
|
+
].join('\n'),
|
|
96
|
+
chatId: options.chatId,
|
|
97
|
+
toolCallId: options.toolCallId,
|
|
98
|
+
defaultOptionId: APPROVAL_OPTION_NO,
|
|
99
|
+
options: [
|
|
100
|
+
{ id: APPROVAL_OPTION_YES, label: 'Yes', description: 'Create the agent now.' },
|
|
101
|
+
{ id: APPROVAL_OPTION_NO, label: 'No', description: 'Do not create the agent.' },
|
|
102
|
+
],
|
|
103
|
+
approvedOptionIds: [APPROVAL_OPTION_YES],
|
|
104
|
+
metadata: {
|
|
105
|
+
tool: 'create_agent',
|
|
106
|
+
name: options.name,
|
|
107
|
+
autoReply: options.autoReply,
|
|
108
|
+
role: options.role,
|
|
109
|
+
nextAgent: options.nextAgent,
|
|
110
|
+
},
|
|
111
|
+
agentName: options.agentName ?? null,
|
|
112
|
+
messages: options.messages,
|
|
81
113
|
});
|
|
114
|
+
return {
|
|
115
|
+
approved: approval.approved,
|
|
116
|
+
reason: approval.reason,
|
|
117
|
+
};
|
|
82
118
|
}
|
|
83
|
-
function
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
119
|
+
async function requestCreateAgentCreatedInfo(options) {
|
|
120
|
+
await requestWorldOption(options.world, {
|
|
121
|
+
title: `Agent ${options.name} created`,
|
|
122
|
+
message: [
|
|
123
|
+
`Agent ${options.name} has been created.`,
|
|
124
|
+
`Auto reply: ${options.autoReply ? 'enabled' : 'disabled'}`,
|
|
125
|
+
`Role: ${options.role ?? '(none)'}`,
|
|
126
|
+
`Next agent: ${options.nextAgent}`,
|
|
127
|
+
`Provider: ${options.provider}`,
|
|
128
|
+
`Model: ${options.model}`,
|
|
129
|
+
].join('\n'),
|
|
130
|
+
chatId: options.chatId,
|
|
131
|
+
defaultOptionId: INFO_OPTION_DISMISS,
|
|
132
|
+
options: [
|
|
133
|
+
{ id: INFO_OPTION_DISMISS, label: 'Dismiss', description: 'Close this confirmation.' },
|
|
134
|
+
],
|
|
135
|
+
metadata: {
|
|
136
|
+
kind: 'create_agent_created',
|
|
137
|
+
refreshAfterDismiss: true,
|
|
138
|
+
agent: {
|
|
139
|
+
name: options.name,
|
|
140
|
+
autoReply: options.autoReply,
|
|
141
|
+
role: options.role,
|
|
142
|
+
nextAgent: options.nextAgent,
|
|
143
|
+
provider: options.provider,
|
|
144
|
+
model: options.model,
|
|
145
|
+
},
|
|
91
146
|
},
|
|
92
|
-
message,
|
|
93
147
|
});
|
|
94
148
|
}
|
|
95
149
|
export function createCreateAgentToolDefinition() {
|
|
96
150
|
return {
|
|
97
|
-
description: 'Create a new agent after explicit user approval. Requires
|
|
151
|
+
description: 'Create a new agent after explicit user approval. Requires name. Optional: autoReply (alias auto-reply), role, nextAgent (alias next agent).',
|
|
98
152
|
parameters: {
|
|
99
153
|
type: 'object',
|
|
100
154
|
properties: {
|
|
101
155
|
name: {
|
|
102
156
|
type: 'string',
|
|
103
|
-
description: '
|
|
157
|
+
description: 'Required agent display name.',
|
|
104
158
|
},
|
|
105
159
|
autoReply: {
|
|
106
160
|
type: 'boolean',
|
|
107
|
-
description: 'Optional auto-reply
|
|
161
|
+
description: 'Optional auto-reply toggle. Alias forms like "auto-reply" are accepted.',
|
|
108
162
|
},
|
|
109
163
|
role: {
|
|
110
164
|
type: 'string',
|
|
111
|
-
description: 'Optional role sentence
|
|
165
|
+
description: 'Optional role sentence fragment for deterministic system prompt generation.',
|
|
112
166
|
},
|
|
113
167
|
nextAgent: {
|
|
114
168
|
type: 'string',
|
|
115
|
-
description: 'Optional mention target
|
|
169
|
+
description: 'Optional next agent mention target. Alias forms like "next agent" are accepted.',
|
|
116
170
|
},
|
|
117
171
|
},
|
|
118
172
|
required: ['name'],
|
|
119
173
|
additionalProperties: false,
|
|
120
174
|
},
|
|
121
175
|
execute: async (args, _sequenceId, _parentToolCall, context) => {
|
|
176
|
+
const normalized = validateAndNormalizeArgs(args || {});
|
|
177
|
+
if (!normalized.valid) {
|
|
178
|
+
return stringifyResult({
|
|
179
|
+
ok: false,
|
|
180
|
+
status: 'error',
|
|
181
|
+
code: 'validation_error',
|
|
182
|
+
created: false,
|
|
183
|
+
message: normalized.error,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
const world = context?.world;
|
|
187
|
+
const worldId = String(world?.id || '').trim();
|
|
188
|
+
const chatId = typeof context?.chatId === 'string' && context.chatId.trim()
|
|
189
|
+
? context.chatId.trim()
|
|
190
|
+
: null;
|
|
191
|
+
// Check world-level tool permission
|
|
192
|
+
const toolPermission = getEnvValueFromText(world?.variables, 'tool_permission') ?? 'auto';
|
|
193
|
+
if (toolPermission === 'read') {
|
|
194
|
+
return stringifyResult({
|
|
195
|
+
ok: false,
|
|
196
|
+
status: 'blocked',
|
|
197
|
+
created: false,
|
|
198
|
+
message: 'create_agent is blocked by the current permission level (read).',
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
if (!world || !worldId) {
|
|
202
|
+
return stringifyResult({
|
|
203
|
+
ok: false,
|
|
204
|
+
status: 'error',
|
|
205
|
+
code: 'approval_unavailable',
|
|
206
|
+
created: false,
|
|
207
|
+
message: 'create_agent requires a valid world context to request approval.',
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
// Claim the creation slot BEFORE showing the approval dialog.
|
|
211
|
+
// This prevents a race where two parallel create_agent calls both pass approval
|
|
212
|
+
// before either calls createAgent — the second call would then find the agent
|
|
213
|
+
// already exists and fail with a confusing post-approval error.
|
|
214
|
+
const slot = await claimAgentCreationSlot(worldId, normalized.args.name);
|
|
215
|
+
if (!slot.claimed) {
|
|
216
|
+
return stringifyResult({
|
|
217
|
+
ok: false,
|
|
218
|
+
status: 'error',
|
|
219
|
+
code: 'agent_exists',
|
|
220
|
+
created: false,
|
|
221
|
+
name: normalized.args.name,
|
|
222
|
+
message: slot.reason === 'already_pending'
|
|
223
|
+
? `Agent '${normalized.args.name}' is already being created.`
|
|
224
|
+
: `Agent '${normalized.args.name}' already exists.`,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
// Track whether createAgent was called so the finally block knows whether
|
|
228
|
+
// to release the slot manually (createAgent's own finally handles it otherwise).
|
|
229
|
+
let createAgentCalled = false;
|
|
122
230
|
try {
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
return formatErrorResult('Missing required parameter: name');
|
|
126
|
-
}
|
|
127
|
-
const world = context?.world;
|
|
128
|
-
const worldId = normalizeSingleLineText(world?.id);
|
|
129
|
-
if (!world || !worldId || !world.eventEmitter) {
|
|
130
|
-
return formatErrorResult('Approval context unavailable: world runtime is required for create_agent.');
|
|
131
|
-
}
|
|
132
|
-
const autoReply = args?.autoReply !== undefined ? !!args.autoReply : true;
|
|
133
|
-
const role = resolveRole(args?.role);
|
|
134
|
-
const nextAgent = resolveNextAgent(args?.nextAgent);
|
|
135
|
-
const provider = resolveProvider(world);
|
|
136
|
-
const model = resolveModel(world);
|
|
137
|
-
const systemPrompt = buildSystemPrompt(name, role, nextAgent);
|
|
138
|
-
const chatId = context?.chatId ?? world.currentChatId ?? null;
|
|
139
|
-
const approval = await requestWorldOption(world, {
|
|
140
|
-
title: `Create agent ${name}?`,
|
|
141
|
-
message: [
|
|
142
|
-
`Create a new agent with name "${name}"?`,
|
|
143
|
-
`autoReply: ${String(autoReply)}`,
|
|
144
|
-
`role: ${role || '(not specified)'}`,
|
|
145
|
-
`nextAgent: ${nextAgent}`,
|
|
146
|
-
`provider: ${provider}`,
|
|
147
|
-
`model: ${model}`,
|
|
148
|
-
].join('\n'),
|
|
231
|
+
const approval = await requestCreateAgentApproval({
|
|
232
|
+
world,
|
|
149
233
|
chatId,
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
{
|
|
158
|
-
id: APPROVAL_OPTION_NO,
|
|
159
|
-
label: 'No',
|
|
160
|
-
description: 'Do not create this agent.',
|
|
161
|
-
},
|
|
162
|
-
],
|
|
163
|
-
metadata: {
|
|
164
|
-
tool: 'create_agent',
|
|
165
|
-
name,
|
|
166
|
-
autoReply,
|
|
167
|
-
role,
|
|
168
|
-
nextAgent,
|
|
169
|
-
provider,
|
|
170
|
-
model,
|
|
171
|
-
},
|
|
234
|
+
name: normalized.args.name,
|
|
235
|
+
autoReply: normalized.args.autoReply,
|
|
236
|
+
role: normalized.args.role,
|
|
237
|
+
nextAgent: normalized.args.nextAgent,
|
|
238
|
+
messages: context?.messages,
|
|
239
|
+
toolCallId: context?.toolCallId,
|
|
240
|
+
agentName: context?.agentName ?? null,
|
|
172
241
|
});
|
|
173
|
-
if (approval.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
: '
|
|
177
|
-
|
|
242
|
+
if (!approval.approved) {
|
|
243
|
+
return stringifyResult({
|
|
244
|
+
ok: false,
|
|
245
|
+
status: 'denied',
|
|
246
|
+
created: false,
|
|
247
|
+
reason: approval.reason,
|
|
248
|
+
name: normalized.args.name,
|
|
249
|
+
});
|
|
178
250
|
}
|
|
179
|
-
const
|
|
180
|
-
|
|
251
|
+
const { provider, model } = resolveProviderAndModel(world);
|
|
252
|
+
const systemPrompt = buildDeterministicSystemPrompt(normalized.args.name, normalized.args.role, normalized.args.nextAgent);
|
|
253
|
+
const createParams = {
|
|
254
|
+
name: normalized.args.name,
|
|
181
255
|
type: 'default',
|
|
182
|
-
autoReply,
|
|
256
|
+
autoReply: normalized.args.autoReply,
|
|
183
257
|
provider,
|
|
184
258
|
model,
|
|
185
259
|
systemPrompt,
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
|
|
260
|
+
};
|
|
261
|
+
createAgentCalled = true;
|
|
262
|
+
const createdAgent = await createAgent(worldId, createParams, {
|
|
263
|
+
allowWhileWorldProcessing: true,
|
|
264
|
+
slotAlreadyClaimed: true,
|
|
265
|
+
});
|
|
266
|
+
if (chatId) {
|
|
267
|
+
// Notify UI to refresh the agent list
|
|
268
|
+
publishEvent(world, EventType.SYSTEM, {
|
|
269
|
+
eventType: 'agent-created',
|
|
270
|
+
agent: {
|
|
271
|
+
id: createdAgent.id,
|
|
272
|
+
name: createdAgent.name,
|
|
273
|
+
type: createdAgent.type,
|
|
274
|
+
autoReply: createdAgent.autoReply ?? false,
|
|
275
|
+
},
|
|
276
|
+
}, chatId);
|
|
277
|
+
try {
|
|
278
|
+
await requestCreateAgentCreatedInfo({
|
|
279
|
+
world,
|
|
280
|
+
chatId,
|
|
281
|
+
name: createdAgent.name,
|
|
282
|
+
autoReply: createdAgent.autoReply ?? false,
|
|
283
|
+
role: normalized.args.role,
|
|
284
|
+
nextAgent: normalized.args.nextAgent,
|
|
285
|
+
provider: createdAgent.provider,
|
|
286
|
+
model: createdAgent.model,
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
// Agent creation already succeeded. Failure to show a follow-up info
|
|
291
|
+
// prompt must not turn a successful create into an error result.
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return stringifyResult({
|
|
295
|
+
ok: true,
|
|
296
|
+
status: 'created',
|
|
189
297
|
created: true,
|
|
190
298
|
agent: {
|
|
191
299
|
id: createdAgent.id,
|
|
192
300
|
name: createdAgent.name,
|
|
193
|
-
|
|
301
|
+
type: createdAgent.type,
|
|
302
|
+
autoReply: createdAgent.autoReply ?? false,
|
|
194
303
|
provider: createdAgent.provider,
|
|
195
304
|
model: createdAgent.model,
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
305
|
+
},
|
|
306
|
+
effective: {
|
|
307
|
+
role: normalized.args.role,
|
|
308
|
+
nextAgent: normalized.args.nextAgent,
|
|
309
|
+
systemPrompt,
|
|
199
310
|
},
|
|
200
311
|
});
|
|
201
312
|
}
|
|
202
313
|
catch (error) {
|
|
203
|
-
if (error instanceof Error && error.name === 'AbortError') {
|
|
204
|
-
throw error;
|
|
205
|
-
}
|
|
206
314
|
const message = error instanceof Error ? error.message : String(error);
|
|
207
|
-
return
|
|
315
|
+
return stringifyResult({
|
|
316
|
+
ok: false,
|
|
317
|
+
status: 'error',
|
|
318
|
+
code: 'create_failed',
|
|
319
|
+
created: false,
|
|
320
|
+
name: normalized.args.name,
|
|
321
|
+
message,
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
finally {
|
|
325
|
+
// Release the slot if createAgent was never called (denial, timeout, or
|
|
326
|
+
// pre-creation error). If createAgent was called, its own finally already
|
|
327
|
+
// cleaned up — calling release() again is safe (idempotent Set.delete).
|
|
328
|
+
if (!createAgentCalled) {
|
|
329
|
+
slot.release();
|
|
330
|
+
}
|
|
208
331
|
}
|
|
209
332
|
},
|
|
210
333
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-agent-tool.js","sourceRoot":"","sources":["../../core/create-agent-tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"create-agent-tool.js","sourceRoot":"","sources":["../../core/create-agent-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAyD,MAAM,YAAY,CAAC;AAC3G,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AACtC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC,MAAM,gBAAgB,GAAgB,WAAW,CAAC,MAAM,CAAC;AACzD,MAAM,aAAa,GAAG,OAAO,CAAC;AAwB9B,SAAS,eAAe,CAAC,OAAgC;IACvD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAyB;IAOzD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACvD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;IACrE,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qDAAqD,EAAE,CAAC;IACxF,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC;IAClF,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACvE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC;IACvF,CAAC;IAED,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC5D,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAC3E,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC,CAAC,CAAC,kBAAkB,CAAC;IAEvB,OAAO;QACL,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,IAAY,EACZ,IAAmB,EACnB,SAAiB;IAEjB,MAAM,SAAS,GAAG,IAAI;QACpB,CAAC,CAAC,iBAAiB,IAAI,kBAAkB,IAAI,GAAG;QAChD,CAAC,CAAC,iBAAiB,IAAI,GAAG,CAAC;IAC7B,OAAO,GAAG,SAAS,mDAAmD,SAAS,mBAAmB,CAAC;AACrG,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,MAAM,QAAQ,GAAG,OAAO,KAAK,EAAE,eAAe,KAAK,QAAQ,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE;QACzF,CAAC,CAAC,KAAK,CAAC,eAAe;QACvB,CAAC,CAAC,gBAAgB,CAAC;IACrB,MAAM,KAAK,GAAG,OAAO,KAAK,EAAE,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE;QAChF,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE;QAC3B,CAAC,CAAC,aAAa,CAAC;IAElB,OAAO,EAAE,QAAQ,EAAE,QAAuB,EAAE,KAAK,EAAE,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,OAUzC;IAIC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC;QACzC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,gBAAgB,OAAO,CAAC,IAAI,GAAG;QACtC,OAAO,EAAE;YACP,6BAA6B,OAAO,CAAC,IAAI,IAAI;YAC7C,eAAe,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;YAC3D,SAAS,OAAO,CAAC,IAAI,IAAI,QAAQ,EAAE;YACnC,eAAe,OAAO,CAAC,SAAS,EAAE;SACnC,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,eAAe,EAAE,kBAAkB;QACnC,OAAO,EAAE;YACP,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC/E,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,0BAA0B,EAAE;SACjF;QACD,iBAAiB,EAAE,CAAC,mBAAmB,CAAC;QACxC,QAAQ,EAAE;YACR,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B;QACD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,6BAA6B,CAAC,OAS5C;IACC,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE;QACtC,KAAK,EAAE,SAAS,OAAO,CAAC,IAAI,UAAU;QACtC,OAAO,EAAE;YACP,SAAS,OAAO,CAAC,IAAI,oBAAoB;YACzC,eAAe,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;YAC3D,SAAS,OAAO,CAAC,IAAI,IAAI,QAAQ,EAAE;YACnC,eAAe,OAAO,CAAC,SAAS,EAAE;YAClC,aAAa,OAAO,CAAC,QAAQ,EAAE;YAC/B,UAAU,OAAO,CAAC,KAAK,EAAE;SAC1B,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,eAAe,EAAE,mBAAmB;QACpC,OAAO,EAAE;YACP,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,0BAA0B,EAAE;SACvF;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,sBAAsB;YAC5B,mBAAmB,EAAE,IAAI;YACzB,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO;QACL,WAAW,EACT,6IAA6I;QAC/I,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,yEAAyE;iBACvF;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6EAA6E;iBAC3F;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iFAAiF;iBAC/F;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;YAClB,oBAAoB,EAAE,KAAK;SAC5B;QACD,OAAO,EAAE,KAAK,EAAE,IAAyB,EAAE,WAAoB,EAAE,eAAwB,EAAE,OAAgC,EAAE,EAAE;YAC7H,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,eAAe,CAAC;oBACrB,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,UAAU,CAAC,KAAK;iBAC1B,CAAC,CAAC;YACL,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;YAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,OAAO,OAAO,EAAE,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;gBACzE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;gBACvB,CAAC,CAAC,IAAI,CAAC;YAET,oCAAoC;YACpC,MAAM,cAAc,GAAG,mBAAmB,CAAE,KAAa,EAAE,SAAS,EAAE,iBAAiB,CAAC,IAAI,MAAM,CAAC;YACnG,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;gBAC9B,OAAO,eAAe,CAAC;oBACrB,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,iEAAiE;iBAC3E,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvB,OAAO,eAAe,CAAC;oBACrB,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,kEAAkE;iBAC5E,CAAC,CAAC;YACL,CAAC;YAED,8DAA8D;YAC9D,gFAAgF;YAChF,8EAA8E;YAC9E,gEAAgE;YAChE,MAAM,IAAI,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,eAAe,CAAC;oBACrB,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI;oBAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,KAAK,iBAAiB;wBACxC,CAAC,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,6BAA6B;wBAC7D,CAAC,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,mBAAmB;iBACtD,CAAC,CAAC;YACL,CAAC;YAED,0EAA0E;YAC1E,iFAAiF;YACjF,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC;oBAChD,KAAK;oBACL,MAAM;oBACN,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI;oBAC1B,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS;oBACpC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI;oBAC1B,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS;oBACpC,QAAQ,EAAE,OAAO,EAAE,QAAsC;oBACzD,UAAU,EAAE,OAAO,EAAE,UAAU;oBAC/B,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI;iBACtC,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACvB,OAAO,eAAe,CAAC;wBACrB,EAAE,EAAE,KAAK;wBACT,MAAM,EAAE,QAAQ;wBAChB,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBAC3D,MAAM,YAAY,GAAG,8BAA8B,CACjD,UAAU,CAAC,IAAI,CAAC,IAAI,EACpB,UAAU,CAAC,IAAI,CAAC,IAAI,EACpB,UAAU,CAAC,IAAI,CAAC,SAAS,CAC1B,CAAC;gBACF,MAAM,YAAY,GAAsB;oBACtC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI;oBAC1B,IAAI,EAAE,SAAS;oBACf,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS;oBACpC,QAAQ;oBACR,KAAK;oBACL,YAAY;iBACb,CAAC;gBACF,iBAAiB,GAAG,IAAI,CAAC;gBACzB,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE;oBAC5D,yBAAyB,EAAE,IAAI;oBAC/B,kBAAkB,EAAE,IAAI;iBACzB,CAAC,CAAC;gBAEH,IAAI,MAAM,EAAE,CAAC;oBACX,sCAAsC;oBACtC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE;wBACpC,SAAS,EAAE,eAAe;wBAC1B,KAAK,EAAE;4BACL,EAAE,EAAE,YAAY,CAAC,EAAE;4BACnB,IAAI,EAAE,YAAY,CAAC,IAAI;4BACvB,IAAI,EAAE,YAAY,CAAC,IAAI;4BACvB,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,KAAK;yBAC3C;qBACF,EAAE,MAAM,CAAC,CAAC;oBAEX,IAAI,CAAC;wBACH,MAAM,6BAA6B,CAAC;4BAClC,KAAK;4BACL,MAAM;4BACN,IAAI,EAAE,YAAY,CAAC,IAAI;4BACvB,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,KAAK;4BAC1C,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI;4BAC1B,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS;4BACpC,QAAQ,EAAE,YAAY,CAAC,QAAQ;4BAC/B,KAAK,EAAE,YAAY,CAAC,KAAK;yBAC1B,CAAC,CAAC;oBACL,CAAC;oBAAC,MAAM,CAAC;wBACP,qEAAqE;wBACrE,iEAAiE;oBACnE,CAAC;gBACH,CAAC;gBAED,OAAO,eAAe,CAAC;oBACrB,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE;wBACL,EAAE,EAAE,YAAY,CAAC,EAAE;wBACnB,IAAI,EAAE,YAAY,CAAC,IAAI;wBACvB,IAAI,EAAE,YAAY,CAAC,IAAI;wBACvB,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,KAAK;wBAC1C,QAAQ,EAAE,YAAY,CAAC,QAAQ;wBAC/B,KAAK,EAAE,YAAY,CAAC,KAAK;qBAC1B;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI;wBAC1B,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS;wBACpC,YAAY;qBACb;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,OAAO,eAAe,CAAC;oBACrB,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI;oBAC1B,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,wEAAwE;gBACxE,0EAA0E;gBAC1E,wEAAwE;gBACxE,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -9,16 +9,19 @@
|
|
|
9
9
|
* - mention-logic.ts: Auto-mention processing (Layer 2)
|
|
10
10
|
* - persistence.ts: Event persistence (Layer 4)
|
|
11
11
|
* - memory-manager.ts: Memory & LLM resumption (Layer 4)
|
|
12
|
+
* - title-scheduler.ts: Chat-title scheduling & idle logic (Layer 4)
|
|
12
13
|
* - orchestrator.ts: Agent message processing (Layer 5)
|
|
13
14
|
* - subscribers.ts: Event subscriptions (Layer 6)
|
|
14
15
|
*
|
|
15
16
|
* Changes:
|
|
16
|
-
* - 2026-
|
|
17
|
-
* -
|
|
17
|
+
* - 2026-03-03: Added title-scheduler.ts (Layer 4) export.
|
|
18
|
+
* - 2026-02-08: Removed outdated manual tool-intervention checker module reference.
|
|
19
|
+
* - 2025-11-09: Completed extraction of all layers (2-6) from monolithic events.ts.
|
|
18
20
|
*/
|
|
19
21
|
export * from './mention-logic.js';
|
|
20
22
|
export * from './publishers.js';
|
|
21
23
|
export * from './persistence.js';
|
|
22
24
|
export * from './memory-manager.js';
|
|
25
|
+
export * from './title-scheduler.js';
|
|
23
26
|
export * from './orchestrator.js';
|
|
24
27
|
export * from './subscribers.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/events/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,cAAc,oBAAoB,CAAC;AAGnC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC"}
|
|
@@ -9,12 +9,14 @@
|
|
|
9
9
|
* - mention-logic.ts: Auto-mention processing (Layer 2)
|
|
10
10
|
* - persistence.ts: Event persistence (Layer 4)
|
|
11
11
|
* - memory-manager.ts: Memory & LLM resumption (Layer 4)
|
|
12
|
+
* - title-scheduler.ts: Chat-title scheduling & idle logic (Layer 4)
|
|
12
13
|
* - orchestrator.ts: Agent message processing (Layer 5)
|
|
13
14
|
* - subscribers.ts: Event subscriptions (Layer 6)
|
|
14
15
|
*
|
|
15
16
|
* Changes:
|
|
16
|
-
* - 2026-
|
|
17
|
-
* -
|
|
17
|
+
* - 2026-03-03: Added title-scheduler.ts (Layer 4) export.
|
|
18
|
+
* - 2026-02-08: Removed outdated manual tool-intervention checker module reference.
|
|
19
|
+
* - 2025-11-09: Completed extraction of all layers (2-6) from monolithic events.ts.
|
|
18
20
|
*/
|
|
19
21
|
// Layer 2: Pure utilities (no dependencies)
|
|
20
22
|
export * from './mention-logic.js';
|
|
@@ -23,6 +25,7 @@ export * from './publishers.js';
|
|
|
23
25
|
// Layer 4: Persistence & Memory
|
|
24
26
|
export * from './persistence.js';
|
|
25
27
|
export * from './memory-manager.js';
|
|
28
|
+
export * from './title-scheduler.js';
|
|
26
29
|
// Layer 5: Orchestration
|
|
27
30
|
export * from './orchestrator.js';
|
|
28
31
|
// Layer 6: Subscriptions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../core/events/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../core/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4CAA4C;AAC5C,cAAc,oBAAoB,CAAC;AAEnC,4BAA4B;AAC5B,cAAc,iBAAiB,CAAC;AAEhC,gCAAgC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAErC,yBAAyB;AACzB,cAAc,mBAAmB,CAAC;AAElC,yBAAyB;AACzB,cAAc,kBAAkB,CAAC"}
|