actoviq-agent-sdk 0.4.11 → 0.4.13
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/CHANGELOG.md +42 -0
- package/dist/src/computer/hadamardComputerUse.d.ts +15 -0
- package/dist/src/computer/hadamardComputerUse.d.ts.map +1 -1
- package/dist/src/computer/hadamardComputerUse.js +120 -4
- package/dist/src/computer/hadamardComputerUse.js.map +1 -1
- package/dist/src/config/agentDefinitionMigration.d.ts +125 -0
- package/dist/src/config/agentDefinitionMigration.d.ts.map +1 -0
- package/dist/src/config/agentDefinitionMigration.js +540 -0
- package/dist/src/config/agentDefinitionMigration.js.map +1 -0
- package/dist/src/config/agentProfiles.d.ts +23 -0
- package/dist/src/config/agentProfiles.d.ts.map +1 -1
- package/dist/src/config/agentProfiles.js +69 -13
- package/dist/src/config/agentProfiles.js.map +1 -1
- package/dist/src/config/hadamardHome.js +0 -1
- package/dist/src/config/hadamardHome.js.map +1 -1
- package/dist/src/config/modelConfigurationCatalog.d.ts +25 -0
- package/dist/src/config/modelConfigurationCatalog.d.ts.map +1 -0
- package/dist/src/config/modelConfigurationCatalog.js +50 -0
- package/dist/src/config/modelConfigurationCatalog.js.map +1 -0
- package/dist/src/config/projectSettings.d.ts +62 -0
- package/dist/src/config/projectSettings.d.ts.map +1 -0
- package/dist/src/config/projectSettings.js +242 -0
- package/dist/src/config/projectSettings.js.map +1 -0
- package/dist/src/config/resolveRuntimeConfig.d.ts.map +1 -1
- package/dist/src/config/resolveRuntimeConfig.js +97 -4
- package/dist/src/config/resolveRuntimeConfig.js.map +1 -1
- package/dist/src/goal/goalCommandService.d.ts +11 -0
- package/dist/src/goal/goalCommandService.d.ts.map +1 -0
- package/dist/src/goal/goalCommandService.js +138 -0
- package/dist/src/goal/goalCommandService.js.map +1 -0
- package/dist/src/goal/goalContinuation.d.ts +50 -0
- package/dist/src/goal/goalContinuation.d.ts.map +1 -0
- package/dist/src/goal/goalContinuation.js +131 -0
- package/dist/src/goal/goalContinuation.js.map +1 -0
- package/dist/src/goal/goalController.d.ts +42 -0
- package/dist/src/goal/goalController.d.ts.map +1 -0
- package/dist/src/goal/goalController.js +281 -0
- package/dist/src/goal/goalController.js.map +1 -0
- package/dist/src/goal/goalPrompt.d.ts +3 -0
- package/dist/src/goal/goalPrompt.d.ts.map +1 -1
- package/dist/src/goal/goalPrompt.js +28 -2
- package/dist/src/goal/goalPrompt.js.map +1 -1
- package/dist/src/goal/goalService.d.ts +68 -2
- package/dist/src/goal/goalService.d.ts.map +1 -1
- package/dist/src/goal/goalService.js +500 -8
- package/dist/src/goal/goalService.js.map +1 -1
- package/dist/src/goal/goalStore.d.ts.map +1 -1
- package/dist/src/goal/goalStore.js +172 -5
- package/dist/src/goal/goalStore.js.map +1 -1
- package/dist/src/goal/goalTools.d.ts +2 -1
- package/dist/src/goal/goalTools.d.ts.map +1 -1
- package/dist/src/goal/goalTools.js +70 -5
- package/dist/src/goal/goalTools.js.map +1 -1
- package/dist/src/goal/goalWorkCoordinator.d.ts +43 -0
- package/dist/src/goal/goalWorkCoordinator.d.ts.map +1 -0
- package/dist/src/goal/goalWorkCoordinator.js +72 -0
- package/dist/src/goal/goalWorkCoordinator.js.map +1 -0
- package/dist/src/goal/index.d.ts +10 -4
- package/dist/src/goal/index.d.ts.map +1 -1
- package/dist/src/goal/index.js +7 -1
- package/dist/src/goal/index.js.map +1 -1
- package/dist/src/goal/projectGoalApi.d.ts +82 -0
- package/dist/src/goal/projectGoalApi.d.ts.map +1 -0
- package/dist/src/goal/projectGoalApi.js +287 -0
- package/dist/src/goal/projectGoalApi.js.map +1 -0
- package/dist/src/goal/projectGoalStore.d.ts +131 -0
- package/dist/src/goal/projectGoalStore.d.ts.map +1 -0
- package/dist/src/goal/projectGoalStore.js +808 -0
- package/dist/src/goal/projectGoalStore.js.map +1 -0
- package/dist/src/goal/types.d.ts +127 -3
- package/dist/src/goal/types.d.ts.map +1 -1
- package/dist/src/goal/types.js +2 -2
- package/dist/src/goal/types.js.map +1 -1
- package/dist/src/gui/agentTargetPicker.d.ts +32 -0
- package/dist/src/gui/agentTargetPicker.d.ts.map +1 -0
- package/dist/src/gui/agentTargetPicker.js +99 -0
- package/dist/src/gui/agentTargetPicker.js.map +1 -0
- package/dist/src/gui/electronMain.js +10 -3
- package/dist/src/gui/electronMain.js.map +1 -1
- package/dist/src/gui/hadamardGui.d.ts +24 -0
- package/dist/src/gui/hadamardGui.d.ts.map +1 -1
- package/dist/src/gui/hadamardGui.js +6321 -1327
- package/dist/src/gui/hadamardGui.js.map +1 -1
- package/dist/src/gui/projectWorkbench.d.ts +13 -2
- package/dist/src/gui/projectWorkbench.d.ts.map +1 -1
- package/dist/src/gui/projectWorkbench.js +109 -67
- package/dist/src/gui/projectWorkbench.js.map +1 -1
- package/dist/src/gui/promptTemplates.d.ts +18 -0
- package/dist/src/gui/promptTemplates.d.ts.map +1 -0
- package/dist/src/gui/promptTemplates.js +178 -0
- package/dist/src/gui/promptTemplates.js.map +1 -0
- package/dist/src/gui/terminalManager.d.ts +14 -0
- package/dist/src/gui/terminalManager.d.ts.map +1 -1
- package/dist/src/gui/terminalManager.js +25 -5
- package/dist/src/gui/terminalManager.js.map +1 -1
- package/dist/src/gui/transcript/clientBundle.d.ts +6 -1
- package/dist/src/gui/transcript/clientBundle.d.ts.map +1 -1
- package/dist/src/gui/transcript/clientBundle.js +6 -1
- package/dist/src/gui/transcript/clientBundle.js.map +1 -1
- package/dist/src/help/productCapabilities.d.ts +17 -0
- package/dist/src/help/productCapabilities.d.ts.map +1 -0
- package/dist/src/help/productCapabilities.js +146 -0
- package/dist/src/help/productCapabilities.js.map +1 -0
- package/dist/src/index.d.ts +21 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +15 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/issues/issueExecution.d.ts.map +1 -1
- package/dist/src/issues/issueExecution.js +29 -9
- package/dist/src/issues/issueExecution.js.map +1 -1
- package/dist/src/manager/assistantGlobalTools.d.ts +44 -0
- package/dist/src/manager/assistantGlobalTools.d.ts.map +1 -1
- package/dist/src/manager/assistantGlobalTools.js +565 -34
- package/dist/src/manager/assistantGlobalTools.js.map +1 -1
- package/dist/src/manager/assistantProposals.d.ts +87 -0
- package/dist/src/manager/assistantProposals.d.ts.map +1 -0
- package/dist/src/manager/assistantProposals.js +207 -0
- package/dist/src/manager/assistantProposals.js.map +1 -0
- package/dist/src/manager/referenceIndex.d.ts +82 -0
- package/dist/src/manager/referenceIndex.d.ts.map +1 -0
- package/dist/src/manager/referenceIndex.js +167 -0
- package/dist/src/manager/referenceIndex.js.map +1 -0
- package/dist/src/manager/referenceOperations.d.ts +108 -0
- package/dist/src/manager/referenceOperations.d.ts.map +1 -0
- package/dist/src/manager/referenceOperations.js +821 -0
- package/dist/src/manager/referenceOperations.js.map +1 -0
- package/dist/src/manager/resolveTargetRef.d.ts +67 -0
- package/dist/src/manager/resolveTargetRef.d.ts.map +1 -0
- package/dist/src/manager/resolveTargetRef.js +81 -0
- package/dist/src/manager/resolveTargetRef.js.map +1 -0
- package/dist/src/memory/durableMemoryPipeline.d.ts +51 -0
- package/dist/src/memory/durableMemoryPipeline.d.ts.map +1 -0
- package/dist/src/memory/durableMemoryPipeline.js +266 -0
- package/dist/src/memory/durableMemoryPipeline.js.map +1 -0
- package/dist/src/memory/durableMemoryStore.d.ts +59 -0
- package/dist/src/memory/durableMemoryStore.d.ts.map +1 -0
- package/dist/src/memory/durableMemoryStore.js +194 -0
- package/dist/src/memory/durableMemoryStore.js.map +1 -0
- package/dist/src/memory/hadamardDream.d.ts +18 -0
- package/dist/src/memory/hadamardDream.d.ts.map +1 -1
- package/dist/src/memory/hadamardDream.js +119 -39
- package/dist/src/memory/hadamardDream.js.map +1 -1
- package/dist/src/memory/hadamardMemory.d.ts +20 -39
- package/dist/src/memory/hadamardMemory.d.ts.map +1 -1
- package/dist/src/memory/hadamardMemory.js +112 -450
- package/dist/src/memory/hadamardMemory.js.map +1 -1
- package/dist/src/memory/hadamardSessionMemoryState.d.ts +2 -5
- package/dist/src/memory/hadamardSessionMemoryState.d.ts.map +1 -1
- package/dist/src/memory/hadamardSessionMemoryState.js +5 -61
- package/dist/src/memory/hadamardSessionMemoryState.js.map +1 -1
- package/dist/src/memory/memoryCommandService.d.ts +25 -0
- package/dist/src/memory/memoryCommandService.d.ts.map +1 -0
- package/dist/src/memory/memoryCommandService.js +93 -0
- package/dist/src/memory/memoryCommandService.js.map +1 -0
- package/dist/src/memory/memoryProposalCommandService.d.ts.map +1 -1
- package/dist/src/memory/memoryProposalCommandService.js +2 -1
- package/dist/src/memory/memoryProposalCommandService.js.map +1 -1
- package/dist/src/memory/memoryProposalTools.d.ts +1 -0
- package/dist/src/memory/memoryProposalTools.d.ts.map +1 -1
- package/dist/src/memory/memoryProposalTools.js +16 -11
- package/dist/src/memory/memoryProposalTools.js.map +1 -1
- package/dist/src/parity/bridgeConfigs.d.ts +4 -0
- package/dist/src/parity/bridgeConfigs.d.ts.map +1 -1
- package/dist/src/parity/bridgeConfigs.js +30 -1
- package/dist/src/parity/bridgeConfigs.js.map +1 -1
- package/dist/src/router/modelRouter.d.ts +22 -2
- package/dist/src/router/modelRouter.d.ts.map +1 -1
- package/dist/src/router/modelRouter.js +76 -9
- package/dist/src/router/modelRouter.js.map +1 -1
- package/dist/src/runtime/agentClient.d.ts +24 -4
- package/dist/src/runtime/agentClient.d.ts.map +1 -1
- package/dist/src/runtime/agentClient.js +581 -262
- package/dist/src/runtime/agentClient.js.map +1 -1
- package/dist/src/runtime/agentSession.d.ts +8 -3
- package/dist/src/runtime/agentSession.d.ts.map +1 -1
- package/dist/src/runtime/agentSession.js +10 -3
- package/dist/src/runtime/agentSession.js.map +1 -1
- package/dist/src/runtime/agentTemplates.d.ts +28 -0
- package/dist/src/runtime/agentTemplates.d.ts.map +1 -0
- package/dist/src/runtime/agentTemplates.js +73 -0
- package/dist/src/runtime/agentTemplates.js.map +1 -0
- package/dist/src/runtime/conversationEngine.d.ts +4 -0
- package/dist/src/runtime/conversationEngine.d.ts.map +1 -1
- package/dist/src/runtime/conversationEngine.js +52 -3
- package/dist/src/runtime/conversationEngine.js.map +1 -1
- package/dist/src/runtime/defaultHadamardAgents.d.ts.map +1 -1
- package/dist/src/runtime/defaultHadamardAgents.js +9 -47
- package/dist/src/runtime/defaultHadamardAgents.js.map +1 -1
- package/dist/src/runtime/effectiveAgentRunOptions.d.ts +49 -0
- package/dist/src/runtime/effectiveAgentRunOptions.d.ts.map +1 -0
- package/dist/src/runtime/effectiveAgentRunOptions.js +50 -0
- package/dist/src/runtime/effectiveAgentRunOptions.js.map +1 -0
- package/dist/src/runtime/externalAgentRunner.d.ts +25 -0
- package/dist/src/runtime/externalAgentRunner.d.ts.map +1 -0
- package/dist/src/runtime/externalAgentRunner.js +57 -0
- package/dist/src/runtime/externalAgentRunner.js.map +1 -0
- package/dist/src/runtime/hadamardAgentDefinitions.d.ts +15 -0
- package/dist/src/runtime/hadamardAgentDefinitions.d.ts.map +1 -1
- package/dist/src/runtime/hadamardAgentDefinitions.js +42 -2
- package/dist/src/runtime/hadamardAgentDefinitions.js.map +1 -1
- package/dist/src/runtime/hadamardAgents.d.ts +6 -0
- package/dist/src/runtime/hadamardAgents.d.ts.map +1 -1
- package/dist/src/runtime/hadamardAgents.js +52 -1
- package/dist/src/runtime/hadamardAgents.js.map +1 -1
- package/dist/src/runtime/hadamardCompact.d.ts +12 -1
- package/dist/src/runtime/hadamardCompact.d.ts.map +1 -1
- package/dist/src/runtime/hadamardCompact.js +91 -35
- package/dist/src/runtime/hadamardCompact.js.map +1 -1
- package/dist/src/runtime/hadamardPermissions.d.ts +1 -0
- package/dist/src/runtime/hadamardPermissions.d.ts.map +1 -1
- package/dist/src/runtime/hadamardPermissions.js +6 -0
- package/dist/src/runtime/hadamardPermissions.js.map +1 -1
- package/dist/src/runtime/hadamardSlashCommands.d.ts +7 -1
- package/dist/src/runtime/hadamardSlashCommands.d.ts.map +1 -1
- package/dist/src/runtime/hadamardSlashCommands.js +47 -5
- package/dist/src/runtime/hadamardSlashCommands.js.map +1 -1
- package/dist/src/runtime/tools.d.ts.map +1 -1
- package/dist/src/runtime/tools.js +2 -0
- package/dist/src/runtime/tools.js.map +1 -1
- package/dist/src/team/executorTarget.d.ts +26 -0
- package/dist/src/team/executorTarget.d.ts.map +1 -0
- package/dist/src/team/executorTarget.js +15 -0
- package/dist/src/team/executorTarget.js.map +1 -0
- package/dist/src/team/modelTeam.d.ts +5 -1
- package/dist/src/team/modelTeam.d.ts.map +1 -1
- package/dist/src/team/modelTeam.js +157 -41
- package/dist/src/team/modelTeam.js.map +1 -1
- package/dist/src/team/teamComposition.d.ts +20 -0
- package/dist/src/team/teamComposition.d.ts.map +1 -0
- package/dist/src/team/teamComposition.js +78 -0
- package/dist/src/team/teamComposition.js.map +1 -0
- package/dist/src/team/teamDefinitions.d.ts +10 -1
- package/dist/src/team/teamDefinitions.d.ts.map +1 -1
- package/dist/src/team/teamDefinitions.js +123 -16
- package/dist/src/team/teamDefinitions.js.map +1 -1
- package/dist/src/team/teamGraph.d.ts +1 -1
- package/dist/src/team/teamGraph.d.ts.map +1 -1
- package/dist/src/team/teamGraph.js +1 -1
- package/dist/src/team/teamGraph.js.map +1 -1
- package/dist/src/team/teamPrompts.d.ts.map +1 -1
- package/dist/src/team/teamPrompts.js +0 -4
- package/dist/src/team/teamPrompts.js.map +1 -1
- package/dist/src/team/teamProposalService.d.ts +9 -1
- package/dist/src/team/teamProposalService.d.ts.map +1 -1
- package/dist/src/team/teamProposalService.js +66 -6
- package/dist/src/team/teamProposalService.js.map +1 -1
- package/dist/src/team/teamPropose.d.ts +3 -1
- package/dist/src/team/teamPropose.d.ts.map +1 -1
- package/dist/src/team/teamPropose.js +16 -10
- package/dist/src/team/teamPropose.js.map +1 -1
- package/dist/src/team/teamRuntime.d.ts +5 -0
- package/dist/src/team/teamRuntime.d.ts.map +1 -1
- package/dist/src/team/teamRuntime.js +23 -5
- package/dist/src/team/teamRuntime.js.map +1 -1
- package/dist/src/team/workflowSquad.d.ts +10 -2
- package/dist/src/team/workflowSquad.d.ts.map +1 -1
- package/dist/src/team/workflowSquad.js +250 -12
- package/dist/src/team/workflowSquad.js.map +1 -1
- package/dist/src/tools/enterWorktree.d.ts.map +1 -1
- package/dist/src/tools/enterWorktree.js +3 -0
- package/dist/src/tools/enterWorktree.js.map +1 -1
- package/dist/src/tools/exaSearch.d.ts +2 -2
- package/dist/src/tools/exitWorktree.d.ts.map +1 -1
- package/dist/src/tools/exitWorktree.js +3 -1
- package/dist/src/tools/exitWorktree.js.map +1 -1
- package/dist/src/tools/hadamardCoreTools.d.ts +5 -14
- package/dist/src/tools/hadamardCoreTools.d.ts.map +1 -1
- package/dist/src/tools/hadamardCoreTools.js +31 -0
- package/dist/src/tools/hadamardCoreTools.js.map +1 -1
- package/dist/src/tools/hadamardFileTools.d.ts.map +1 -1
- package/dist/src/tools/hadamardFileTools.js +116 -38
- package/dist/src/tools/hadamardFileTools.js.map +1 -1
- package/dist/src/tools/planMode/PlanModeTools.d.ts +22 -0
- package/dist/src/tools/planMode/PlanModeTools.d.ts.map +1 -1
- package/dist/src/tools/planMode/PlanModeTools.js +102 -5
- package/dist/src/tools/planMode/PlanModeTools.js.map +1 -1
- package/dist/src/tools/todo/TodoWriteTool.d.ts +1 -1
- package/dist/src/tui/hadamardTui.d.ts.map +1 -1
- package/dist/src/tui/hadamardTui.js +387 -168
- package/dist/src/tui/hadamardTui.js.map +1 -1
- package/dist/src/tui/pendingInput.d.ts +17 -0
- package/dist/src/tui/pendingInput.d.ts.map +1 -0
- package/dist/src/tui/pendingInput.js +23 -0
- package/dist/src/tui/pendingInput.js.map +1 -0
- package/dist/src/tui/reasoningDisplay.d.ts +13 -0
- package/dist/src/tui/reasoningDisplay.d.ts.map +1 -0
- package/dist/src/tui/reasoningDisplay.js +45 -0
- package/dist/src/tui/reasoningDisplay.js.map +1 -0
- package/dist/src/tui/screen.d.ts +11 -1
- package/dist/src/tui/screen.d.ts.map +1 -1
- package/dist/src/tui/screen.js +64 -34
- package/dist/src/tui/screen.js.map +1 -1
- package/dist/src/types.d.ts +210 -77
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/ui/commandSurface.d.ts +8 -0
- package/dist/src/ui/commandSurface.d.ts.map +1 -1
- package/dist/src/ui/commandSurface.js +78 -13
- package/dist/src/ui/commandSurface.js.map +1 -1
- package/dist/src/update/appUpdateService.d.ts +34 -1
- package/dist/src/update/appUpdateService.d.ts.map +1 -1
- package/dist/src/update/appUpdateService.js +114 -9
- package/dist/src/update/appUpdateService.js.map +1 -1
- package/package.json +3 -2
- package/dist/src/prompts/outputStyles.d.ts +0 -20
- package/dist/src/prompts/outputStyles.d.ts.map +0 -1
- package/dist/src/prompts/outputStyles.js +0 -35
- package/dist/src/prompts/outputStyles.js.map +0 -1
|
@@ -0,0 +1,540 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified agent store, S1a (plan/AGENT_SUBAGENT_UNIFICATION_08Aug2026 §1/§3):
|
|
3
|
+
* the json→md auto-migration, the .md serializer shared with the interim
|
|
4
|
+
* profile write-through, and the AgentProfile compatibility derivation from
|
|
5
|
+
* the unified `.md` store.
|
|
6
|
+
*
|
|
7
|
+
* Interim semantics (until S3 moves the write path fully to .md):
|
|
8
|
+
* - Reads merge legacy `agent-configs.json` profiles with profiles derived
|
|
9
|
+
* from `<home>/.hadamard/agents/*.md`; the .md definition wins on name
|
|
10
|
+
* conflict ("file wins").
|
|
11
|
+
* - Migration runs on first read (idempotent): every json profile without a
|
|
12
|
+
* same-named .md gets one (`promptMode: extend`, `subagent: true`, body =
|
|
13
|
+
* systemPromptAppend); afterwards the json is renamed to
|
|
14
|
+
* `agent-configs.json.migrated.bak` (never deleted; when a .bak already
|
|
15
|
+
* exists the migration is skipped and the json keeps its legacy behavior).
|
|
16
|
+
* - Writes go to the json while it exists; once migrated (json absent) they
|
|
17
|
+
* write through to .md files. Upsert preserves frontmatter keys the profile
|
|
18
|
+
* model does not carry (allowedAgents, skills, memory, background,
|
|
19
|
+
* isolation, initialPrompt, …); bulk writes delete only .md files that
|
|
20
|
+
* parse as profile-backed definitions (bridgeConfig set) whose name is
|
|
21
|
+
* absent from the store, so pure-subagent .md files are never touched.
|
|
22
|
+
* - Note: P1 transaction rollback (withFileRollback) does not snapshot .md
|
|
23
|
+
* files yet — full transactional .md handling lands with S3.
|
|
24
|
+
*/
|
|
25
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
26
|
+
import path from 'node:path';
|
|
27
|
+
import { parseAgentDefinitionMarkdown, parseMarkdownFrontmatter, } from '../runtime/hadamardAgentDefinitions.js';
|
|
28
|
+
import { resolveHadamardHome } from './hadamardHome.js';
|
|
29
|
+
const MIGRATED_BACKUP_SUFFIX = '.migrated.bak';
|
|
30
|
+
/** Frontmatter keys owned by the AgentProfile model, in canonical write order. */
|
|
31
|
+
const PROFILE_FRONTMATTER_ORDER = [
|
|
32
|
+
'name',
|
|
33
|
+
'description',
|
|
34
|
+
'bridgeConfig',
|
|
35
|
+
'model',
|
|
36
|
+
'effort',
|
|
37
|
+
'permissionMode',
|
|
38
|
+
'promptMode',
|
|
39
|
+
'temperature',
|
|
40
|
+
'topP',
|
|
41
|
+
'maxTokens',
|
|
42
|
+
'maxIterations',
|
|
43
|
+
'timeoutMs',
|
|
44
|
+
'workspaceAccess',
|
|
45
|
+
'tools',
|
|
46
|
+
'subagent',
|
|
47
|
+
];
|
|
48
|
+
export function agentDefinitionsDir(homeDir) {
|
|
49
|
+
return path.join(resolveHadamardHome(homeDir), 'agents');
|
|
50
|
+
}
|
|
51
|
+
export function projectAgentDefinitionsDir(projectDir) {
|
|
52
|
+
return path.join(projectDir, '.hadamard', 'agents');
|
|
53
|
+
}
|
|
54
|
+
function agentProfilesJsonPath(homeDir) {
|
|
55
|
+
return path.join(resolveHadamardHome(homeDir), 'agent-configs.json');
|
|
56
|
+
}
|
|
57
|
+
function listMarkdownFiles(dir) {
|
|
58
|
+
let entries;
|
|
59
|
+
try {
|
|
60
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
return entries
|
|
66
|
+
.filter(entry => entry.isFile() && entry.name.toLowerCase().endsWith('.md'))
|
|
67
|
+
.map(entry => path.join(dir, entry.name));
|
|
68
|
+
}
|
|
69
|
+
/** Definition name for a .md file: frontmatter name, else the filename stem. */
|
|
70
|
+
function definitionNameForFile(filePath) {
|
|
71
|
+
try {
|
|
72
|
+
const parsed = parseMarkdownFrontmatter(readFileSync(filePath, 'utf8'));
|
|
73
|
+
return (parsed.frontmatter.name?.trim()
|
|
74
|
+
|| path.basename(filePath, path.extname(filePath)).trim()
|
|
75
|
+
|| undefined);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function tryParseDefinition(filePath) {
|
|
82
|
+
try {
|
|
83
|
+
return parseAgentDefinitionMarkdown({
|
|
84
|
+
filePath,
|
|
85
|
+
fallbackName: path.basename(filePath, path.extname(filePath)),
|
|
86
|
+
source: 'user',
|
|
87
|
+
content: readFileSync(filePath, 'utf8'),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Load one project/personal `.md` Agent as a runtime definition (project wins). */
|
|
95
|
+
export function readStoredAgentDefinition(name, homeDir, projectDir) {
|
|
96
|
+
const dirs = [agentDefinitionsDir(homeDir)];
|
|
97
|
+
if (projectDir)
|
|
98
|
+
dirs.unshift(projectAgentDefinitionsDir(projectDir));
|
|
99
|
+
for (const dir of dirs) {
|
|
100
|
+
const filePath = findDefinitionFileByName(dir, name);
|
|
101
|
+
if (!filePath)
|
|
102
|
+
continue;
|
|
103
|
+
return tryParseDefinition(filePath) ?? null;
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
function findDefinitionFileByName(dir, name) {
|
|
108
|
+
return listMarkdownFiles(dir).find(filePath => definitionNameForFile(filePath) === name);
|
|
109
|
+
}
|
|
110
|
+
function formatFrontmatterValue(value) {
|
|
111
|
+
if (value === undefined || value === null)
|
|
112
|
+
return undefined;
|
|
113
|
+
if (Array.isArray(value)) {
|
|
114
|
+
return value.length ? value.map(item => String(item)).join(', ') : undefined;
|
|
115
|
+
}
|
|
116
|
+
if (typeof value === 'boolean')
|
|
117
|
+
return value ? 'true' : 'false';
|
|
118
|
+
if (typeof value === 'number')
|
|
119
|
+
return Number.isFinite(value) ? String(value) : undefined;
|
|
120
|
+
const str = String(value).trim();
|
|
121
|
+
return str || undefined;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Serialize one agent definition to the unified .md format. Profile-owned
|
|
125
|
+
* keys are emitted in canonical order first; any extra keys (subagent-only
|
|
126
|
+
* fields preserved from an existing file) follow.
|
|
127
|
+
*/
|
|
128
|
+
export function serializeAgentDefinitionMarkdown(fields, body) {
|
|
129
|
+
const lines = ['---'];
|
|
130
|
+
const seen = new Set();
|
|
131
|
+
for (const key of PROFILE_FRONTMATTER_ORDER) {
|
|
132
|
+
seen.add(key);
|
|
133
|
+
const formatted = formatFrontmatterValue(fields[key]);
|
|
134
|
+
if (formatted !== undefined)
|
|
135
|
+
lines.push(`${key}: ${formatted}`);
|
|
136
|
+
}
|
|
137
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
138
|
+
if (seen.has(key))
|
|
139
|
+
continue;
|
|
140
|
+
const formatted = formatFrontmatterValue(value);
|
|
141
|
+
if (formatted !== undefined)
|
|
142
|
+
lines.push(`${key}: ${formatted}`);
|
|
143
|
+
}
|
|
144
|
+
lines.push('---', '', body.trim(), '');
|
|
145
|
+
return lines.join('\n');
|
|
146
|
+
}
|
|
147
|
+
/** Migrated/GUI-created profiles default to promptMode extend + subagent true (§6-1/§6-4). */
|
|
148
|
+
function profileToMarkdownFields(profile) {
|
|
149
|
+
return {
|
|
150
|
+
name: profile.name,
|
|
151
|
+
description: profile.description,
|
|
152
|
+
bridgeConfig: profile.bridgeConfig,
|
|
153
|
+
model: profile.model,
|
|
154
|
+
effort: profile.effort,
|
|
155
|
+
permissionMode: profile.permissionMode,
|
|
156
|
+
promptMode: profile.promptMode ?? 'extend',
|
|
157
|
+
temperature: profile.temperature,
|
|
158
|
+
topP: profile.topP,
|
|
159
|
+
maxTokens: profile.maxTokens,
|
|
160
|
+
maxIterations: profile.maxIterations,
|
|
161
|
+
timeoutMs: profile.timeoutMs,
|
|
162
|
+
workspaceAccess: profile.workspaceAccess,
|
|
163
|
+
tools: profile.allowedTools,
|
|
164
|
+
subagent: profile.subagent ?? true,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Derive the legacy AgentProfile view from a unified definition. Only
|
|
169
|
+
* definitions carrying both bridgeConfig and model qualify — pure .md
|
|
170
|
+
* subagents never appear in the profile view.
|
|
171
|
+
*/
|
|
172
|
+
export function agentDefinitionToProfile(definition) {
|
|
173
|
+
const bridgeConfig = definition.bridgeConfig?.trim();
|
|
174
|
+
const model = definition.model?.trim();
|
|
175
|
+
if (!bridgeConfig || !model)
|
|
176
|
+
return null;
|
|
177
|
+
return {
|
|
178
|
+
name: definition.name,
|
|
179
|
+
bridgeConfig,
|
|
180
|
+
model,
|
|
181
|
+
...(definition.description ? { description: definition.description } : {}),
|
|
182
|
+
...(definition.systemPrompt?.trim() ? { systemPromptAppend: definition.systemPrompt.trim() } : {}),
|
|
183
|
+
...(definition.promptMode ? { promptMode: definition.promptMode } : {}),
|
|
184
|
+
...(typeof definition.subagent === 'boolean' ? { subagent: definition.subagent } : {}),
|
|
185
|
+
...(definition.permissionMode ? { permissionMode: definition.permissionMode } : {}),
|
|
186
|
+
...(definition.effort ? { effort: definition.effort } : {}),
|
|
187
|
+
...(typeof definition.maxTokens === 'number' ? { maxTokens: definition.maxTokens } : {}),
|
|
188
|
+
...(typeof definition.temperature === 'number' ? { temperature: definition.temperature } : {}),
|
|
189
|
+
...(typeof definition.topP === 'number' ? { topP: definition.topP } : {}),
|
|
190
|
+
...(definition.allowedTools?.length ? { allowedTools: [...definition.allowedTools] } : {}),
|
|
191
|
+
...(definition.workspaceAccess ? { workspaceAccess: definition.workspaceAccess } : {}),
|
|
192
|
+
...(typeof definition.maxToolIterations === 'number'
|
|
193
|
+
? { maxIterations: definition.maxToolIterations }
|
|
194
|
+
: {}),
|
|
195
|
+
...(typeof definition.timeoutMs === 'number' ? { timeoutMs: definition.timeoutMs } : {}),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/** True once the json store has been migrated (json gone, .bak present). */
|
|
199
|
+
export function agentProfileStoreMigrated(homeDir) {
|
|
200
|
+
const jsonPath = agentProfilesJsonPath(homeDir);
|
|
201
|
+
return !existsSync(jsonPath) && existsSync(`${jsonPath}${MIGRATED_BACKUP_SUFFIX}`);
|
|
202
|
+
}
|
|
203
|
+
/** True when a same-named .md definition already lives in the unified store. */
|
|
204
|
+
export function profileStoredAsMarkdown(name, homeDir) {
|
|
205
|
+
return findDefinitionFileByName(agentDefinitionsDir(homeDir), name) !== undefined;
|
|
206
|
+
}
|
|
207
|
+
const VALID_DEFINITION_NAME = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
|
|
208
|
+
function formatExtras(extras) {
|
|
209
|
+
if (!extras)
|
|
210
|
+
return {};
|
|
211
|
+
return {
|
|
212
|
+
promptMode: extras.promptMode,
|
|
213
|
+
subagent: extras.subagent,
|
|
214
|
+
allowedAgents: extras.allowedAgents?.length ? extras.allowedAgents : undefined,
|
|
215
|
+
skills: extras.skills?.length ? extras.skills : undefined,
|
|
216
|
+
memory: extras.memory,
|
|
217
|
+
background: extras.background === true ? true : undefined,
|
|
218
|
+
isolation: extras.isolation,
|
|
219
|
+
initialPrompt: extras.initialPrompt?.trim() || undefined,
|
|
220
|
+
model: extras.model?.trim() || undefined,
|
|
221
|
+
runtime: extras.runtime?.trim() && extras.runtime.trim() !== 'hadamard'
|
|
222
|
+
? extras.runtime.trim()
|
|
223
|
+
: undefined,
|
|
224
|
+
permissionMode: extras.permissionMode,
|
|
225
|
+
effort: extras.effort,
|
|
226
|
+
temperature: extras.temperature,
|
|
227
|
+
topP: extras.topP,
|
|
228
|
+
maxTokens: extras.maxTokens,
|
|
229
|
+
maxIterations: extras.maxIterations,
|
|
230
|
+
timeoutMs: extras.timeoutMs,
|
|
231
|
+
workspaceAccess: extras.workspaceAccess,
|
|
232
|
+
tools: extras.tools?.length ? extras.tools : undefined,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Extras applied on top of a profile write: only the delegation keys.
|
|
237
|
+
* Profile-owned keys (model, effort, permissionMode, sampling, workspace,
|
|
238
|
+
* tools) come from the profile itself and must never be cleared by extras.
|
|
239
|
+
*/
|
|
240
|
+
function formatDelegationExtras(extras) {
|
|
241
|
+
const full = formatExtras(extras);
|
|
242
|
+
return {
|
|
243
|
+
promptMode: full.promptMode,
|
|
244
|
+
subagent: full.subagent,
|
|
245
|
+
allowedAgents: full.allowedAgents,
|
|
246
|
+
skills: full.skills,
|
|
247
|
+
memory: full.memory,
|
|
248
|
+
background: full.background,
|
|
249
|
+
isolation: full.isolation,
|
|
250
|
+
initialPrompt: full.initialPrompt,
|
|
251
|
+
runtime: full.runtime,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
/** Read one definition's raw frontmatter + body by name (project dir wins). */
|
|
255
|
+
export function readAgentDefinitionMarkdown(name, homeDir, projectDir) {
|
|
256
|
+
const dirs = [];
|
|
257
|
+
if (projectDir)
|
|
258
|
+
dirs.push({ dir: path.join(projectDir, '.hadamard', 'agents'), source: 'project' });
|
|
259
|
+
dirs.push({ dir: agentDefinitionsDir(homeDir), source: 'user' });
|
|
260
|
+
for (const { dir, source } of dirs) {
|
|
261
|
+
const filePath = findDefinitionFileByName(dir, name);
|
|
262
|
+
if (!filePath)
|
|
263
|
+
continue;
|
|
264
|
+
try {
|
|
265
|
+
const parsed = parseMarkdownFrontmatter(readFileSync(filePath, 'utf8'));
|
|
266
|
+
return { frontmatter: parsed.frontmatter, body: parsed.body, filePath, source };
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Write a pure .md agent (no bridgeConfig/model — "inherit session model").
|
|
276
|
+
* Such definitions never appear in the profile compatibility view.
|
|
277
|
+
*/
|
|
278
|
+
export function writeAgentDefinitionMarkdown(options) {
|
|
279
|
+
const name = options.name.trim();
|
|
280
|
+
if (!VALID_DEFINITION_NAME.test(name)) {
|
|
281
|
+
throw new Error('Invalid agent name (use letters, digits, . _ -)');
|
|
282
|
+
}
|
|
283
|
+
const dir = options.directory ?? agentDefinitionsDir(options.homeDir);
|
|
284
|
+
mkdirSync(dir, { recursive: true });
|
|
285
|
+
const existing = findDefinitionFileByName(dir, name);
|
|
286
|
+
let fields = {};
|
|
287
|
+
if (existing) {
|
|
288
|
+
const parsed = parseMarkdownFrontmatter(readFileSync(existing, 'utf8'));
|
|
289
|
+
fields = { ...parsed.frontmatter };
|
|
290
|
+
}
|
|
291
|
+
const owned = {
|
|
292
|
+
name,
|
|
293
|
+
description: options.description?.trim() || undefined,
|
|
294
|
+
...formatExtras(options.extras),
|
|
295
|
+
};
|
|
296
|
+
for (const [key, value] of Object.entries(owned)) {
|
|
297
|
+
if (formatFrontmatterValue(value) === undefined)
|
|
298
|
+
delete fields[key];
|
|
299
|
+
else
|
|
300
|
+
fields[key] = value;
|
|
301
|
+
}
|
|
302
|
+
const body = options.body?.trim() || (existing ? parseMarkdownFrontmatter(readFileSync(existing, 'utf8')).body.trim() : '') || 'No additional instructions.';
|
|
303
|
+
if (!fields.description)
|
|
304
|
+
fields.description = firstBodyLine(body) ?? name;
|
|
305
|
+
const filePath = existing ?? path.join(dir, `${name}.md`);
|
|
306
|
+
writeFileSync(filePath, serializeAgentDefinitionMarkdown(fields, body), 'utf8');
|
|
307
|
+
return filePath;
|
|
308
|
+
}
|
|
309
|
+
/** Profiles derived from the unified .md store (user scope). */
|
|
310
|
+
export function readProfilesFromAgentDefinitions(homeDir) {
|
|
311
|
+
const profiles = [];
|
|
312
|
+
for (const filePath of listMarkdownFiles(agentDefinitionsDir(homeDir))) {
|
|
313
|
+
const definition = tryParseDefinition(filePath);
|
|
314
|
+
if (!definition)
|
|
315
|
+
continue;
|
|
316
|
+
const profile = agentDefinitionToProfile(definition);
|
|
317
|
+
if (profile)
|
|
318
|
+
profiles.push(profile);
|
|
319
|
+
}
|
|
320
|
+
return profiles;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Reference-index input (S3): profile-shaped entries for EVERY .md definition
|
|
324
|
+
* carrying a bridgeConfig, in both scopes (project wins on name conflict).
|
|
325
|
+
* Unlike the composer compat view this tolerates a missing model — a
|
|
326
|
+
* config edge exists even when the definition follows the config's default
|
|
327
|
+
* model. Not for composer/activation use.
|
|
328
|
+
*/
|
|
329
|
+
export function readAllAgentReferenceProfiles(homeDir, projectDir) {
|
|
330
|
+
const merged = new Map();
|
|
331
|
+
const dirs = [agentDefinitionsDir(homeDir)];
|
|
332
|
+
if (projectDir)
|
|
333
|
+
dirs.push(projectAgentDefinitionsDir(projectDir));
|
|
334
|
+
for (const dir of dirs) {
|
|
335
|
+
for (const filePath of listMarkdownFiles(dir)) {
|
|
336
|
+
const definition = tryParseDefinition(filePath);
|
|
337
|
+
const bridgeConfig = definition?.bridgeConfig?.trim();
|
|
338
|
+
if (!definition || !bridgeConfig)
|
|
339
|
+
continue;
|
|
340
|
+
merged.set(definition.name, agentDefinitionToProfile(definition) ?? {
|
|
341
|
+
name: definition.name,
|
|
342
|
+
bridgeConfig,
|
|
343
|
+
model: definition.model?.trim() || '',
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return [...merged.values()];
|
|
348
|
+
}
|
|
349
|
+
/** All .md definition names in both scopes (reference known-set for agent targets). */
|
|
350
|
+
export function listAgentDefinitionNames(homeDir, projectDir) {
|
|
351
|
+
const names = new Set();
|
|
352
|
+
const dirs = [agentDefinitionsDir(homeDir)];
|
|
353
|
+
if (projectDir)
|
|
354
|
+
dirs.push(projectAgentDefinitionsDir(projectDir));
|
|
355
|
+
for (const dir of dirs) {
|
|
356
|
+
for (const filePath of listMarkdownFiles(dir)) {
|
|
357
|
+
const name = definitionNameForFile(filePath);
|
|
358
|
+
if (name)
|
|
359
|
+
names.add(name);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
return [...names];
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Locate one agent definition .md file by frontmatter name. Project scope
|
|
366
|
+
* shadows personal (the same precedence loadHadamardAgentDefinitions uses).
|
|
367
|
+
*/
|
|
368
|
+
export function findAgentDefinitionFile(name, homeDir, projectDir) {
|
|
369
|
+
const dirs = [agentDefinitionsDir(homeDir)];
|
|
370
|
+
if (projectDir)
|
|
371
|
+
dirs.unshift(projectAgentDefinitionsDir(projectDir));
|
|
372
|
+
for (const dir of dirs) {
|
|
373
|
+
const filePath = findDefinitionFileByName(dir, name);
|
|
374
|
+
if (filePath)
|
|
375
|
+
return { filePath, directory: dir };
|
|
376
|
+
}
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
/** Minimal raw-profile extraction for migration (json entries are pre-normalized). */
|
|
380
|
+
function normalizeMigrationProfile(raw) {
|
|
381
|
+
if (typeof raw !== 'object' || raw === null)
|
|
382
|
+
return null;
|
|
383
|
+
const record = raw;
|
|
384
|
+
const name = typeof record.name === 'string' ? record.name.trim() : '';
|
|
385
|
+
const bridgeConfig = typeof record.bridgeConfig === 'string' ? record.bridgeConfig.trim() : '';
|
|
386
|
+
const model = typeof record.model === 'string' ? record.model.trim() : '';
|
|
387
|
+
if (!name || !bridgeConfig || !model)
|
|
388
|
+
return null;
|
|
389
|
+
const numberOr = (value) => typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
390
|
+
const stringOr = (value) => typeof value === 'string' && value.trim() ? value.trim() : undefined;
|
|
391
|
+
return {
|
|
392
|
+
name,
|
|
393
|
+
bridgeConfig,
|
|
394
|
+
model,
|
|
395
|
+
description: stringOr(record.description),
|
|
396
|
+
systemPromptAppend: stringOr(record.systemPromptAppend),
|
|
397
|
+
promptMode: record.promptMode === 'replace' ? 'replace' : record.promptMode === 'extend' ? 'extend' : undefined,
|
|
398
|
+
subagent: typeof record.subagent === 'boolean' ? record.subagent : undefined,
|
|
399
|
+
permissionMode: record.permissionMode,
|
|
400
|
+
effort: record.effort,
|
|
401
|
+
maxTokens: numberOr(record.maxTokens),
|
|
402
|
+
temperature: numberOr(record.temperature),
|
|
403
|
+
topP: numberOr(record.topP),
|
|
404
|
+
allowedTools: Array.isArray(record.allowedTools)
|
|
405
|
+
? record.allowedTools.filter((tool) => typeof tool === 'string' && Boolean(tool.trim()))
|
|
406
|
+
: undefined,
|
|
407
|
+
workspaceAccess: record.workspaceAccess === 'full' ? 'full' : record.workspaceAccess === 'workspace' ? 'workspace' : undefined,
|
|
408
|
+
maxIterations: numberOr(record.maxIterations),
|
|
409
|
+
timeoutMs: numberOr(record.timeoutMs),
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
function firstBodyLine(body) {
|
|
413
|
+
return body
|
|
414
|
+
.split(/\r?\n/u)
|
|
415
|
+
.map(line => line.trim())
|
|
416
|
+
.find(line => Boolean(line) && !line.startsWith('#'))
|
|
417
|
+
?.slice(0, 240);
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* json→md auto-migration (§3). Idempotent; skips entirely when a
|
|
421
|
+
* `.migrated.bak` already exists. Same-named .md definitions win over json
|
|
422
|
+
* profiles (never overwritten). After processing, the json is renamed to
|
|
423
|
+
* `agent-configs.json.migrated.bak` — never deleted, so the change is
|
|
424
|
+
* revertible by renaming it back.
|
|
425
|
+
*/
|
|
426
|
+
export function migrateAgentProfilesToMarkdown(homeDir, agentsDir = agentDefinitionsDir(homeDir)) {
|
|
427
|
+
const result = { migrated: [], skipped: [] };
|
|
428
|
+
const jsonPath = agentProfilesJsonPath(homeDir);
|
|
429
|
+
if (!existsSync(jsonPath))
|
|
430
|
+
return result;
|
|
431
|
+
const backupPath = `${jsonPath}${MIGRATED_BACKUP_SUFFIX}`;
|
|
432
|
+
if (existsSync(backupPath))
|
|
433
|
+
return result;
|
|
434
|
+
let raw;
|
|
435
|
+
try {
|
|
436
|
+
raw = JSON.parse(readFileSync(jsonPath, 'utf8'));
|
|
437
|
+
}
|
|
438
|
+
catch {
|
|
439
|
+
// Unparseable json: leave it for the legacy reader rather than guessing.
|
|
440
|
+
return result;
|
|
441
|
+
}
|
|
442
|
+
const list = Array.isArray(raw.profiles)
|
|
443
|
+
? raw.profiles
|
|
444
|
+
: [];
|
|
445
|
+
const existingNames = new Set();
|
|
446
|
+
for (const filePath of listMarkdownFiles(agentsDir)) {
|
|
447
|
+
const name = definitionNameForFile(filePath);
|
|
448
|
+
if (name)
|
|
449
|
+
existingNames.add(name);
|
|
450
|
+
}
|
|
451
|
+
mkdirSync(agentsDir, { recursive: true });
|
|
452
|
+
for (const entry of list) {
|
|
453
|
+
const profile = normalizeMigrationProfile(entry);
|
|
454
|
+
if (!profile)
|
|
455
|
+
continue;
|
|
456
|
+
if (existingNames.has(profile.name)) {
|
|
457
|
+
result.skipped.push(profile.name);
|
|
458
|
+
continue;
|
|
459
|
+
}
|
|
460
|
+
const body = profile.systemPromptAppend?.trim()
|
|
461
|
+
|| profile.description?.trim()
|
|
462
|
+
|| 'No additional instructions.';
|
|
463
|
+
const description = profile.description?.trim() || firstBodyLine(body);
|
|
464
|
+
writeFileSync(path.join(agentsDir, `${profile.name}.md`), serializeAgentDefinitionMarkdown({ ...profileToMarkdownFields(profile), description }, body), 'utf8');
|
|
465
|
+
result.migrated.push(profile.name);
|
|
466
|
+
}
|
|
467
|
+
renameSync(jsonPath, backupPath);
|
|
468
|
+
return result;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Write-through upsert (migrated store): update the definition's .md file.
|
|
472
|
+
* Profile-owned frontmatter keys are set or cleared wholesale (upsert
|
|
473
|
+
* semantics); unknown keys (allowedAgents, skills, …) are preserved. The body
|
|
474
|
+
* mirrors systemPromptAppend — the compat derivation maps body →
|
|
475
|
+
* systemPromptAppend, so read-modify-write through the profile API always
|
|
476
|
+
* carries the current body. `options.directory` redirects the write to a
|
|
477
|
+
* project agents dir; `options.extras` (when provided) set-or-clear the
|
|
478
|
+
* subagent/delegation keys the profile model does not carry.
|
|
479
|
+
*/
|
|
480
|
+
export function writeAgentProfileMarkdown(profile, homeDir, options = {}) {
|
|
481
|
+
const dir = options.directory ?? agentDefinitionsDir(homeDir);
|
|
482
|
+
mkdirSync(dir, { recursive: true });
|
|
483
|
+
const existing = findDefinitionFileByName(dir, profile.name);
|
|
484
|
+
let fields = {};
|
|
485
|
+
const body = profile.systemPromptAppend?.trim() || '';
|
|
486
|
+
if (existing) {
|
|
487
|
+
const parsed = parseMarkdownFrontmatter(readFileSync(existing, 'utf8'));
|
|
488
|
+
fields = { ...parsed.frontmatter };
|
|
489
|
+
}
|
|
490
|
+
for (const [key, value] of Object.entries(profileToMarkdownFields(profile))) {
|
|
491
|
+
if (formatFrontmatterValue(value) === undefined)
|
|
492
|
+
delete fields[key];
|
|
493
|
+
else
|
|
494
|
+
fields[key] = value;
|
|
495
|
+
}
|
|
496
|
+
if (options.extras) {
|
|
497
|
+
for (const [key, value] of Object.entries(formatDelegationExtras(options.extras))) {
|
|
498
|
+
if (formatFrontmatterValue(value) === undefined)
|
|
499
|
+
delete fields[key];
|
|
500
|
+
else
|
|
501
|
+
fields[key] = value;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
const finalBody = body || 'No additional instructions.';
|
|
505
|
+
if (!fields.description) {
|
|
506
|
+
fields.description = firstBodyLine(finalBody) ?? profile.name;
|
|
507
|
+
}
|
|
508
|
+
const filePath = existing ?? path.join(dir, `${profile.name}.md`);
|
|
509
|
+
writeFileSync(filePath, serializeAgentDefinitionMarkdown(fields, finalBody), 'utf8');
|
|
510
|
+
return filePath;
|
|
511
|
+
}
|
|
512
|
+
/** Write-through delete (migrated store): remove the definition's .md file. */
|
|
513
|
+
export function deleteAgentProfileMarkdown(name, homeDir, directory) {
|
|
514
|
+
const dir = directory ?? agentDefinitionsDir(homeDir);
|
|
515
|
+
const existing = findDefinitionFileByName(dir, name);
|
|
516
|
+
if (!existing)
|
|
517
|
+
return false;
|
|
518
|
+
unlinkSync(existing);
|
|
519
|
+
return true;
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Bulk write-through (migrated store): upsert every profile, then remove
|
|
523
|
+
* profile-backed .md files whose name is absent from the store (a rename
|
|
524
|
+
* leaves no stale file). Pure-subagent .md files (no bridgeConfig) are kept.
|
|
525
|
+
*/
|
|
526
|
+
export function writeAgentProfilesMarkdown(profiles, homeDir) {
|
|
527
|
+
const dir = agentDefinitionsDir(homeDir);
|
|
528
|
+
for (const profile of profiles) {
|
|
529
|
+
writeAgentProfileMarkdown(profile, homeDir);
|
|
530
|
+
}
|
|
531
|
+
const keep = new Set(profiles.map(profile => profile.name));
|
|
532
|
+
for (const filePath of listMarkdownFiles(dir)) {
|
|
533
|
+
const name = definitionNameForFile(filePath);
|
|
534
|
+
if (!name || keep.has(name))
|
|
535
|
+
continue;
|
|
536
|
+
if (tryParseDefinition(filePath)?.bridgeConfig)
|
|
537
|
+
unlinkSync(filePath);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
//# sourceMappingURL=agentDefinitionMigration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentDefinitionMigration.js","sourceRoot":"","sources":["../../../src/config/agentDefinitionMigration.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,10 @@ export interface AgentProfile {
|
|
|
6
6
|
bridgeConfig: string;
|
|
7
7
|
model: string;
|
|
8
8
|
systemPromptAppend?: string;
|
|
9
|
+
/** `extend` appends Agent instructions; `replace` replaces the caller prompt. */
|
|
10
|
+
promptMode?: 'extend' | 'replace';
|
|
11
|
+
/** False makes the Agent main-chat-only and unavailable to Agent/Task delegation. */
|
|
12
|
+
subagent?: boolean;
|
|
9
13
|
permissionMode?: HadamardPermissionMode;
|
|
10
14
|
/** Preferred effort for this agent; omit to keep session/default effort. */
|
|
11
15
|
effort?: HadamardRunEffort;
|
|
@@ -15,6 +19,14 @@ export interface AgentProfile {
|
|
|
15
19
|
temperature?: number;
|
|
16
20
|
/** Optional nucleus sampling override for this agent (0-1). */
|
|
17
21
|
topP?: number;
|
|
22
|
+
/** Core-tool whitelist for runs under this agent. Absent → full toolset. */
|
|
23
|
+
allowedTools?: string[];
|
|
24
|
+
/** `workspace` (default): project workspace only; `full`: unrestricted filesystem. */
|
|
25
|
+
workspaceAccess?: 'workspace' | 'full';
|
|
26
|
+
/** ReAct tool-iteration cap. Omit or ≤0 = unlimited. */
|
|
27
|
+
maxIterations?: number;
|
|
28
|
+
/** Run timeout (ms). Omit → no profile-level timeout. */
|
|
29
|
+
timeoutMs?: number;
|
|
18
30
|
}
|
|
19
31
|
export interface PersistedAgentProfiles {
|
|
20
32
|
version: 1;
|
|
@@ -58,16 +70,27 @@ export interface SelectableAgent {
|
|
|
58
70
|
provider?: InProcessProvider;
|
|
59
71
|
/** Model capabilities inherited from the matching registered model entry. */
|
|
60
72
|
context1M?: boolean;
|
|
73
|
+
contextWindowTokens?: number;
|
|
74
|
+
maxContextWindowTokens?: number;
|
|
75
|
+
effectiveContextWindowPercent?: number;
|
|
76
|
+
autoCompactTokenLimit?: number;
|
|
61
77
|
modality?: ModelModality;
|
|
62
78
|
/** `profile` = saved Agent Profile; `config` = auto preset from a provider config model. */
|
|
63
79
|
source: 'profile' | 'config';
|
|
64
80
|
description?: string;
|
|
65
81
|
permissionMode?: HadamardPermissionMode;
|
|
66
82
|
systemPromptAppend?: string;
|
|
83
|
+
promptMode?: 'extend' | 'replace';
|
|
84
|
+
subagent?: boolean;
|
|
67
85
|
effort?: HadamardRunEffort;
|
|
68
86
|
maxTokens?: number;
|
|
69
87
|
temperature?: number;
|
|
70
88
|
topP?: number;
|
|
89
|
+
/** Core-tool whitelist for runs under this agent (P2). */
|
|
90
|
+
allowedTools?: string[];
|
|
91
|
+
workspaceAccess?: 'workspace' | 'full';
|
|
92
|
+
maxIterations?: number;
|
|
93
|
+
timeoutMs?: number;
|
|
71
94
|
/** True when this entry was synthesized and is not stored in agent-configs.json. */
|
|
72
95
|
ephemeral?: boolean;
|
|
73
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentProfiles.d.ts","sourceRoot":"","sources":["../../../src/config/agentProfiles.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,QAAQ,EACR,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"agentProfiles.d.ts","sourceRoot":"","sources":["../../../src/config/agentProfiles.ts"],"names":[],"mappings":"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"}
|