actoviq-agent-sdk 0.4.2 → 0.4.6

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.
Files changed (116) hide show
  1. package/README-zh.md +58 -62
  2. package/README.md +72 -22
  3. package/assets/actoviq-icon.png +0 -0
  4. package/bin/actoviq-gui.js +24 -0
  5. package/dist/src/cli/actoviq-react.js +31 -14
  6. package/dist/src/cli/actoviq-react.js.map +1 -1
  7. package/dist/src/cli/actoviq-tui.js +9 -0
  8. package/dist/src/cli/actoviq-tui.js.map +1 -1
  9. package/dist/src/cli/bridge-interactive-agent.js +94 -15
  10. package/dist/src/cli/bridge-interactive-agent.js.map +1 -1
  11. package/dist/src/cli/version.d.ts +3 -0
  12. package/dist/src/cli/version.d.ts.map +1 -0
  13. package/dist/src/cli/version.js +28 -0
  14. package/dist/src/cli/version.js.map +1 -0
  15. package/dist/src/gui/actoviqGui.d.ts +29 -0
  16. package/dist/src/gui/actoviqGui.d.ts.map +1 -0
  17. package/dist/src/gui/actoviqGui.js +5319 -0
  18. package/dist/src/gui/actoviqGui.js.map +1 -0
  19. package/dist/src/gui/electronMain.d.ts +3 -0
  20. package/dist/src/gui/electronMain.d.ts.map +1 -0
  21. package/dist/src/gui/electronMain.js +176 -0
  22. package/dist/src/gui/electronMain.js.map +1 -0
  23. package/dist/src/gui/guiMarkdown.d.ts +3 -0
  24. package/dist/src/gui/guiMarkdown.d.ts.map +1 -0
  25. package/dist/src/gui/guiMarkdown.js +188 -0
  26. package/dist/src/gui/guiMarkdown.js.map +1 -0
  27. package/dist/src/hooks/userHooks.d.ts +39 -0
  28. package/dist/src/hooks/userHooks.d.ts.map +1 -0
  29. package/dist/src/hooks/userHooks.js +169 -0
  30. package/dist/src/hooks/userHooks.js.map +1 -0
  31. package/dist/src/index.d.ts +2 -0
  32. package/dist/src/index.d.ts.map +1 -1
  33. package/dist/src/index.js +2 -0
  34. package/dist/src/index.js.map +1 -1
  35. package/dist/src/mcp/mcpServerConfig.d.ts +19 -0
  36. package/dist/src/mcp/mcpServerConfig.d.ts.map +1 -0
  37. package/dist/src/mcp/mcpServerConfig.js +51 -0
  38. package/dist/src/mcp/mcpServerConfig.js.map +1 -0
  39. package/dist/src/memory/projectContext.d.ts +32 -0
  40. package/dist/src/memory/projectContext.d.ts.map +1 -0
  41. package/dist/src/memory/projectContext.js +175 -0
  42. package/dist/src/memory/projectContext.js.map +1 -0
  43. package/dist/src/memory/sessionHistory.d.ts +21 -0
  44. package/dist/src/memory/sessionHistory.d.ts.map +1 -0
  45. package/dist/src/memory/sessionHistory.js +83 -0
  46. package/dist/src/memory/sessionHistory.js.map +1 -0
  47. package/dist/src/parity/actoviqBridgeSdk.d.ts +3 -0
  48. package/dist/src/parity/actoviqBridgeSdk.d.ts.map +1 -1
  49. package/dist/src/parity/actoviqBridgeSdk.js +93 -92
  50. package/dist/src/parity/actoviqBridgeSdk.js.map +1 -1
  51. package/dist/src/parity/bridgeConfigs.d.ts +49 -0
  52. package/dist/src/parity/bridgeConfigs.d.ts.map +1 -0
  53. package/dist/src/parity/bridgeConfigs.js +134 -0
  54. package/dist/src/parity/bridgeConfigs.js.map +1 -0
  55. package/dist/src/parity/bridgeEventAdapter.d.ts +20 -0
  56. package/dist/src/parity/bridgeEventAdapter.d.ts.map +1 -0
  57. package/dist/src/parity/bridgeEventAdapter.js +121 -0
  58. package/dist/src/parity/bridgeEventAdapter.js.map +1 -0
  59. package/dist/src/parity/bridgeExecResolver.d.ts +27 -0
  60. package/dist/src/parity/bridgeExecResolver.d.ts.map +1 -0
  61. package/dist/src/parity/bridgeExecResolver.js +95 -0
  62. package/dist/src/parity/bridgeExecResolver.js.map +1 -0
  63. package/dist/src/parity/bridgeProviders.d.ts +132 -0
  64. package/dist/src/parity/bridgeProviders.d.ts.map +1 -0
  65. package/dist/src/parity/bridgeProviders.js +651 -0
  66. package/dist/src/parity/bridgeProviders.js.map +1 -0
  67. package/dist/src/prompts/outputStyles.d.ts +20 -0
  68. package/dist/src/prompts/outputStyles.d.ts.map +1 -0
  69. package/dist/src/prompts/outputStyles.js +35 -0
  70. package/dist/src/prompts/outputStyles.js.map +1 -0
  71. package/dist/src/prompts/systemPrompt.d.ts.map +1 -1
  72. package/dist/src/prompts/systemPrompt.js +9 -1
  73. package/dist/src/prompts/systemPrompt.js.map +1 -1
  74. package/dist/src/router/modelRouter.d.ts +7 -1
  75. package/dist/src/router/modelRouter.d.ts.map +1 -1
  76. package/dist/src/router/modelRouter.js +50 -15
  77. package/dist/src/router/modelRouter.js.map +1 -1
  78. package/dist/src/runtime/agentSession.d.ts +6 -0
  79. package/dist/src/runtime/agentSession.d.ts.map +1 -1
  80. package/dist/src/runtime/agentSession.js +15 -0
  81. package/dist/src/runtime/agentSession.js.map +1 -1
  82. package/dist/src/runtime/bashClassification.d.ts +18 -0
  83. package/dist/src/runtime/bashClassification.d.ts.map +1 -0
  84. package/dist/src/runtime/bashClassification.js +83 -0
  85. package/dist/src/runtime/bashClassification.js.map +1 -0
  86. package/dist/src/team/modelTeam.d.ts +3 -5
  87. package/dist/src/team/modelTeam.d.ts.map +1 -1
  88. package/dist/src/team/modelTeam.js +98 -162
  89. package/dist/src/team/modelTeam.js.map +1 -1
  90. package/dist/src/team/teamRuntime.d.ts +60 -0
  91. package/dist/src/team/teamRuntime.d.ts.map +1 -0
  92. package/dist/src/team/teamRuntime.js +139 -0
  93. package/dist/src/team/teamRuntime.js.map +1 -0
  94. package/dist/src/tools/actoviqCoreTools.d.ts +1 -0
  95. package/dist/src/tools/actoviqCoreTools.d.ts.map +1 -1
  96. package/dist/src/tools/actoviqCoreTools.js +5 -0
  97. package/dist/src/tools/actoviqCoreTools.js.map +1 -1
  98. package/dist/src/tools/planMode/PlanModeTools.d.ts +18 -0
  99. package/dist/src/tools/planMode/PlanModeTools.d.ts.map +1 -0
  100. package/dist/src/tools/planMode/PlanModeTools.js +71 -0
  101. package/dist/src/tools/planMode/PlanModeTools.js.map +1 -0
  102. package/dist/src/tui/actoviqTui.d.ts +3 -0
  103. package/dist/src/tui/actoviqTui.d.ts.map +1 -1
  104. package/dist/src/tui/actoviqTui.js +1474 -91
  105. package/dist/src/tui/actoviqTui.js.map +1 -1
  106. package/dist/src/tui/transcript.d.ts +6 -0
  107. package/dist/src/tui/transcript.d.ts.map +1 -1
  108. package/dist/src/tui/transcript.js +27 -0
  109. package/dist/src/tui/transcript.js.map +1 -1
  110. package/dist/src/types.d.ts +128 -9
  111. package/dist/src/types.d.ts.map +1 -1
  112. package/dist/src/ui/commandSurface.d.ts +13 -0
  113. package/dist/src/ui/commandSurface.d.ts.map +1 -0
  114. package/dist/src/ui/commandSurface.js +100 -0
  115. package/dist/src/ui/commandSurface.js.map +1 -0
  116. package/package.json +42 -3
@@ -0,0 +1,100 @@
1
+ export const ACTOVIQ_INTERACTIVE_COMMANDS = {
2
+ help: 'Show available commands',
3
+ clear: 'Clear the screen',
4
+ init: 'Generate a CLAUDE.md for this project',
5
+ compact: 'Compact the current session',
6
+ memory: 'Show memory/compact state',
7
+ context: 'Show what is in the context window',
8
+ cost: 'Show running token + spend totals',
9
+ usage: 'Alias for /cost',
10
+ doctor: 'Run configuration diagnostics',
11
+ batch: 'Run multiple prompts from a file sequentially',
12
+ goal: 'Set or view a session goal with status tracking',
13
+ review: 'Review the current git diff for correctness',
14
+ stats: 'Show session statistics',
15
+ export: 'Export the conversation as Markdown',
16
+ model: 'Select a model or configure its provider',
17
+ effort: 'Select the reasoning effort',
18
+ 'output-style': 'Select the response output style',
19
+ permissions: 'Show or set the permission mode',
20
+ plan: 'Enter plan mode or view the current plan',
21
+ rewind: 'Rewind the conversation by N messages',
22
+ sessions: 'List stored sessions',
23
+ resume: 'Resume a stored session',
24
+ tools: 'List available tools',
25
+ skills: 'Browse available skills',
26
+ agents: 'Browse available subagents',
27
+ mcp: 'Inspect MCP servers and tools',
28
+ hooks: 'List configured PreToolUse hooks',
29
+ plugins: 'Browse discovered Clean plugins',
30
+ dream: 'Inspect or run memory consolidation',
31
+ workflows: 'Browse saved dynamic workflows',
32
+ worktree: 'Enter, exit, or list git worktrees',
33
+ team: 'List or run Model Team definitions',
34
+ bridge: 'Configure / run bridge runtimes (6 providers)',
35
+ exit: 'Quit',
36
+ };
37
+ /**
38
+ * Sub-commands offered for completion once a top-level command is committed
39
+ * (e.g. `/bridge ` → `run`/`switch`/…). Only commands that take a known
40
+ * second word are listed; bare-action commands (`/clear`, `/compact`, …)
41
+ * intentionally have no entries, so typing a space after them closes the
42
+ * menu and lets the user type freely.
43
+ */
44
+ export const SUBCOMMANDS = {
45
+ bridge: ['run', 'switch', 'model', 'config', 'setup', 'off', 'help'],
46
+ model: ['router', 'config'],
47
+ team: ['ask', 'list'],
48
+ worktree: ['enter', 'exit', 'list'],
49
+ workflows: ['list', 'run'],
50
+ dream: ['run', 'status'],
51
+ permissions: ['read-only', 'workspace', 'full'],
52
+ };
53
+ /** Description-column text for sub-commands, keyed by `${head} ${sub}`. */
54
+ export const SUBCOMMAND_DESCRIPTIONS = {
55
+ 'bridge run': 'Run a prompt through the bridge CLI',
56
+ 'bridge switch': 'Activate a saved config by name (or a raw provider id)',
57
+ 'bridge model': 'Set the model for the current provider',
58
+ 'bridge config': 'Add / edit / remove named connection configs',
59
+ 'bridge setup': 'Detect + configure runtimes',
60
+ 'bridge off': 'Disable bridge mode',
61
+ 'bridge help': 'Show /bridge sub-commands',
62
+ 'model router': 'Pick a leader/dispatch router profile',
63
+ 'model config': 'Edit provider / keys / model tiers',
64
+ 'team ask': 'Ask a named team a prompt',
65
+ 'team list': 'List saved team definitions',
66
+ 'worktree enter': 'Enter a git worktree',
67
+ 'worktree exit': 'Exit the current worktree',
68
+ 'worktree list': 'List worktrees',
69
+ 'workflows list': 'List saved workflows',
70
+ 'workflows run': 'Run a saved workflow',
71
+ 'dream run': 'Run memory consolidation',
72
+ 'dream status': 'Show dream state',
73
+ 'permissions read-only': 'Read-only preset',
74
+ 'permissions workspace': 'Auto-approve in-workspace edits',
75
+ 'permissions full': 'Bypass all permission prompts',
76
+ };
77
+ export function filterInteractiveCommands(input) {
78
+ if (!input.startsWith('/'))
79
+ return [];
80
+ const rest = input.slice(1);
81
+ const head = rest.split(/\s/, 1)[0] ?? '';
82
+ // No space yet: complete the top-level command name.
83
+ if (!input.includes(' ')) {
84
+ const partial = head.toLowerCase();
85
+ return Object.keys(ACTOVIQ_INTERACTIVE_COMMANDS).filter((name) => name.startsWith(partial));
86
+ }
87
+ // A space is present. Offer sub-commands only for commands that have them,
88
+ // and only while the user is still choosing the sub-command (no second
89
+ // space yet). Once a second space appears the sub-command is committed and
90
+ // the user is typing the argument/prompt — close the menu.
91
+ const subs = SUBCOMMANDS[head.toLowerCase()];
92
+ if (!subs)
93
+ return [];
94
+ const afterHead = rest.slice(head.length + 1);
95
+ if (afterHead.includes(' '))
96
+ return [];
97
+ const partialSub = afterHead.toLowerCase();
98
+ return subs.filter((sub) => sub.startsWith(partialSub)).map((sub) => `${head.toLowerCase()} ${sub}`);
99
+ }
100
+ //# sourceMappingURL=commandSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandSurface.js","sourceRoot":"","sources":["../../../src/ui/commandSurface.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "actoviq-agent-sdk",
3
- "version": "0.4.2",
4
- "description": "A clean, public agent SDK with Actoviq and MCP integrations.",
3
+ "version": "0.4.6",
4
+ "description": "Agent team platform — multi-agent, multi-runtime, model team collaboration with TUI, GUI, and MCP.",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/DeconBear/actoviq-agent-sdk.git"
@@ -15,11 +15,43 @@
15
15
  "publishConfig": {
16
16
  "access": "public"
17
17
  },
18
+ "build": {
19
+ "appId": "com.actoviq.gui",
20
+ "productName": "Actoviq",
21
+ "copyright": "Copyright Actoviq",
22
+ "artifactName": "Actoviq-Setup-${version}-${arch}.${ext}",
23
+ "directories": { "output": "dist_electron" },
24
+ "extraMetadata": { "main": "dist/src/gui/electronMain.js" },
25
+ "files": [
26
+ "dist/**/*",
27
+ "assets/**/*",
28
+ "vendor/**/*",
29
+ "package.json",
30
+ "node_modules/**/*",
31
+ "!**/node_modules/bun/**",
32
+ "!**/node_modules/@oven/**",
33
+ "!**/node_modules/electron/**",
34
+ "!**/node_modules/{typescript,vitepress,vitest,tsx,playwright,@types/**,@anthropic-ai/claude-agent-sdk}/**"
35
+ ],
36
+ "asar": true,
37
+ "win": {
38
+ "target": ["nsis"]
39
+ },
40
+ "nsis": {
41
+ "oneClick": false,
42
+ "perMachine": false,
43
+ "allowToChangeInstallationDirectory": true,
44
+ "createDesktopShortcut": true,
45
+ "createStartMenuShortcut": true,
46
+ "shortcutName": "Actoviq"
47
+ }
48
+ },
18
49
  "main": "./dist/src/index.js",
19
50
  "types": "./dist/src/index.d.ts",
20
51
  "bin": {
21
52
  "actoviq-react": "./bin/actoviq-react.js",
22
53
  "actoviq-tui": "./bin/actoviq-tui.js",
54
+ "actoviq-gui": "./bin/actoviq-gui.js",
23
55
  "actoviq-interactive-agent": "./bin/actoviq-interactive-agent.js",
24
56
  "actoviq-link-runtime": "./bin/actoviq-link-runtime.js"
25
57
  },
@@ -31,6 +63,7 @@
31
63
  },
32
64
  "files": [
33
65
  "dist",
66
+ "assets",
34
67
  "README.md",
35
68
  "README-zh.md",
36
69
  "vendor/actoviq-runtime/cli.js"
@@ -48,6 +81,7 @@
48
81
  "prepare:public-runtime": "node scripts/prepare-public-runtime.mjs",
49
82
  "sync:actoviq-runtime": "node scripts/sync-actoviq-runtime-upstream.mjs",
50
83
  "typecheck": "tsc -p tsconfig.json --noEmit",
84
+ "dist:win": "npm run build && electron-builder --win nsis --x64 --arm64",
51
85
  "test": "vitest run",
52
86
  "test:watch": "vitest",
53
87
  "bench:standard": "tsx bench/standard/run-all.ts",
@@ -89,15 +123,20 @@
89
123
  ],
90
124
  "dependencies": {
91
125
  "@modelcontextprotocol/sdk": "^1.29.0",
92
- "bun": "^1.3.11",
93
126
  "glob": "^13.0.0",
94
127
  "lodash-es": "^4.17.23",
95
128
  "zod": "^4.1.12"
96
129
  },
130
+ "optionalDependencies": {
131
+ "bun": "^1.3.11",
132
+ "electron": "^42.4.1"
133
+ },
97
134
  "devDependencies": {
98
135
  "@anthropic-ai/claude-agent-sdk": "^0.3.161",
99
136
  "@types/lodash-es": "^4.17.12",
100
137
  "@types/node": "^22.0.0",
138
+ "electron-builder": "^26.0.0",
139
+ "playwright": "^1.61.0",
101
140
  "tsx": "^4.20.6",
102
141
  "typescript": "^5.8.3",
103
142
  "vitepress": "^1.6.3",