martty 0.2.13 → 0.2.14

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 CHANGED
@@ -53,6 +53,37 @@ retain both copies, but the TUI bundle replaces that surface's rows and mounts
53
53
  only the plugin resolved from TUI's own dependency graph. The supported profile
54
54
  shape never runs two ACP surfaces for one TUI.
55
55
 
56
+ Foreign agent plugins use the same Host composition:
57
+
58
+ ```sh
59
+ dsh plugin --profile tui add @openma/dsh-agents-plugins-bridge@latest
60
+ ```
61
+
62
+ The [Agent Plugins Bridge](https://github.com/openma-ai/dsh-agents-plugins-bridge)
63
+ projects imported commands and skills into TUI through ACP and keeps hooks,
64
+ MCP, agents, monitors, and Pi extensions on the Host. Browser-only management,
65
+ themes, and MCP Apps HTML rendering remain on the Web surface.
66
+
67
+ ## Headless owner
68
+
69
+ `martty owner` keeps one real ACP Session and its Host plugin lifecycles alive
70
+ without starting the Node compositor or Rust TUI. Lifecycle commands are
71
+ repeatable, must be advertised by the Session, and run in order:
72
+
73
+ ```sh
74
+ martty owner \
75
+ --agent dsh \
76
+ --agent-arg --profile \
77
+ --agent-arg telegram-owner \
78
+ --startup-command /telegram-connect \
79
+ --shutdown-command /telegram-disconnect
80
+ ```
81
+
82
+ The client negotiates explicit `rpc` interaction mode. It does not auto-answer
83
+ permissions, authentication, or extension forms; perform one-time interactive
84
+ setup first and stop any existing owner of the same extension resource. Keep
85
+ the process alive with a process supervisor for continuous operation.
86
+
56
87
  The package carries ACP as a runtime dependency and exports its Creator Host
57
88
  overlay internally. The profile bundle mounts both on the Host Base tree;
58
89
  neither enters the Client tree. Creator adds TUI plugin guidance to the
@@ -69,7 +100,8 @@ dsh-tui --demo
69
100
  dsh-tui --demo-skin
70
101
  ```
71
102
 
72
- `dsh-tui` is the primary command. `dsb` is a compatibility alias.
103
+ `dsh-tui` is the interactive command. `martty` is the product alias for the
104
+ same native program; `dsb` is a compatibility alias.
73
105
 
74
106
  ## Highlights
75
107
 
package/bin/dsh-tui.js CHANGED
@@ -5,6 +5,7 @@ import path from 'node:path'
5
5
  import { spawnSync } from 'node:child_process'
6
6
  import { fileURLToPath } from 'node:url'
7
7
  import { bootClient, parseClientArgv, painterArgs } from '../lib/boot.js'
8
+ import { runsNativeOwner } from '../lib/native-cli.js'
8
9
 
9
10
  const __dirname = path.dirname(fileURLToPath(import.meta.url))
10
11
  const platformKey = process.platform + '-' + process.arch
@@ -21,6 +22,7 @@ const wantDemoSkin = argv.includes('--demo-skin')
21
22
  const wantDemo = argv.includes('--demo')
22
23
  const wantHelp = argv.includes('-h') || argv.includes('--help')
23
24
  const wantVersion = argv.includes('-V') || argv.includes('--version')
25
+ const wantOwner = runsNativeOwner(argv)
24
26
 
25
27
  if (!fs.existsSync(binaryPath)) {
26
28
  let available = []
@@ -49,7 +51,7 @@ function exitFromSpawn(result) {
49
51
  )
50
52
  }
51
53
 
52
- if (wantHelp || wantVersion || wantDemo) {
54
+ if (wantHelp || wantVersion || wantDemo || wantOwner) {
53
55
  exitFromSpawn(spawnSync(binaryPath, argv, { stdio: 'inherit' }))
54
56
  }
55
57
 
@@ -0,0 +1,4 @@
1
+ /** Owner has no painter/client tree; the native binary owns ACP directly. */
2
+ export function runsNativeOwner(argv) {
3
+ return argv[0] === 'owner'
4
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "martty",
3
- "version": "0.2.13",
3
+ "version": "0.2.14",
4
4
  "description": "Terminal-native ACP client UI; Cordis client tree, any ACP agent",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -15,7 +15,7 @@
15
15
  "main": "lib/index.js",
16
16
  "scripts": {
17
17
  "pretest": "node --test ../scripts/workflow-release.test.mjs ../scripts/package-alias.test.mjs",
18
- "test": "node --test ../scripts/package-native.test.mjs ../scripts/check-release-tag.test.mjs ../scripts/check-static-elf.test.mjs ../scripts/smoke-old-linux.test.mjs ../scripts/cargo-guard.test.mjs ../scripts/build-npm.test.mjs ../scripts/client-profile.test.mjs ../scripts/plugin-runner.test.mjs ../scripts/profile-link-resolution.test.mjs ../scripts/release.test.mjs ../scripts/jsonrpc-line-transport.test.mjs ../scripts/tui-theme.test.mjs ../scripts/tui-slots.test.mjs ../scripts/tui-commands.test.mjs ../scripts/tui-overlay.test.mjs ../scripts/mux.test.mjs ../scripts/acp-client.test.mjs ../scripts/acp-client-events.test.mjs ../scripts/acp-session-config.test.mjs ../scripts/acp-session-plan.test.mjs ../scripts/acp-session-stats.test.mjs ../scripts/plan-view.test.mjs ../scripts/stats-view.test.mjs ../scripts/runner.test.mjs ../scripts/inspect.test.mjs ../scripts/creator-overlay.test.mjs ../scripts/real-agent-e2e.test.mjs"
18
+ "test": "node --test ../scripts/owner-cli.test.mjs ../scripts/package-native.test.mjs ../scripts/check-release-tag.test.mjs ../scripts/check-static-elf.test.mjs ../scripts/smoke-old-linux.test.mjs ../scripts/cargo-guard.test.mjs ../scripts/build-npm.test.mjs ../scripts/client-profile.test.mjs ../scripts/plugin-runner.test.mjs ../scripts/profile-link-resolution.test.mjs ../scripts/release.test.mjs ../scripts/jsonrpc-line-transport.test.mjs ../scripts/tui-theme.test.mjs ../scripts/tui-slots.test.mjs ../scripts/tui-commands.test.mjs ../scripts/tui-overlay.test.mjs ../scripts/mux.test.mjs ../scripts/acp-client.test.mjs ../scripts/acp-client-events.test.mjs ../scripts/acp-session-config.test.mjs ../scripts/acp-session-plan.test.mjs ../scripts/acp-session-stats.test.mjs ../scripts/plan-view.test.mjs ../scripts/stats-view.test.mjs ../scripts/runner.test.mjs ../scripts/inspect.test.mjs ../scripts/creator-overlay.test.mjs ../scripts/real-agent-e2e.test.mjs"
19
19
  },
20
20
  "publishConfig": {
21
21
  "access": "public",
@@ -44,6 +44,7 @@
44
44
  "./package.json": "./package.json"
45
45
  },
46
46
  "bin": {
47
+ "martty": "bin/dsh-tui.js",
47
48
  "dsh-tui": "bin/dsh-tui.js",
48
49
  "dsb": "bin/dsh-tui.js"
49
50
  },
@@ -64,7 +65,7 @@
64
65
  },
65
66
  "dependencies": {
66
67
  "@deepseek-ai/cordis": "^4.0.1",
67
- "@openma/deepseek-harness-acp": "0.4.13"
68
+ "@openma/deepseek-harness-acp": "0.4.15"
68
69
  },
69
70
  "devDependencies": {
70
71
  "@deepseek-ai/dsh": "0.1.0-rc.6"
Binary file
Binary file
Binary file
Binary file
Binary file