martty 0.2.11 → 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
@@ -25,6 +25,21 @@ The profile command is the recommended install and upgrade path. It creates a
25
25
  missing profile and installs the TUI plus its ACP dependency; no global
26
26
  `dsh-tui` installation is required.
27
27
 
28
+ ## Migrating from the scoped package
29
+
30
+ `martty` is the recommended package name. Starting with `0.2.13`, it and the
31
+ legacy `martty` package are published by the same CI run
32
+ with identical versions and artifacts. Existing scoped-package installs remain
33
+ supported. To switch package names:
34
+
35
+ ```sh
36
+ dsh plugin --profile tui remove martty
37
+ dsh plugin --profile tui add martty@latest
38
+ ```
39
+
40
+ Only the package spec changes. The `dsh-tui` / `dsb` commands, `tui` profile,
41
+ runtime behavior, config, and session data remain unchanged.
42
+
28
43
  The profile Host mounts the ACP plugin on Base, then starts a separate TUI
29
44
  Client process over standard ACP stdin/stdout. For standalone use, run
30
45
  `dsh-tui` and use `--agent <cmd>` plus repeated `--agent-arg <arg>` for another
@@ -38,6 +53,37 @@ retain both copies, but the TUI bundle replaces that surface's rows and mounts
38
53
  only the plugin resolved from TUI's own dependency graph. The supported profile
39
54
  shape never runs two ACP surfaces for one TUI.
40
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
+
41
87
  The package carries ACP as a runtime dependency and exports its Creator Host
42
88
  overlay internally. The profile bundle mounts both on the Host Base tree;
43
89
  neither enters the Client tree. Creator adds TUI plugin guidance to the
@@ -54,7 +100,8 @@ dsh-tui --demo
54
100
  dsh-tui --demo-skin
55
101
  ```
56
102
 
57
- `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.
58
105
 
59
106
  ## Highlights
60
107
 
@@ -112,6 +159,9 @@ that you installed the latest version and that your platform appears above.
112
159
  npm uninstall --global martty
113
160
  ```
114
161
 
162
+ Use `npm uninstall --global martty` instead for a legacy
163
+ global installation.
164
+
115
165
  Source, screenshots, development commands, and architecture notes live in the
116
166
  [GitHub repository](https://github.com/openma-ai/Martty).
117
167
 
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.11",
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