arashi 1.38.0 → 1.40.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 CHANGED
@@ -97,6 +97,14 @@ You can then use `aw switch --cd <filter>` to change the current shell's directo
97
97
  Remove only the exact managed shell block with `aw shell uninstall --dry-run`, then
98
98
  `aw shell uninstall --yes`. This leaves executables, PATH, manifests, and project data untouched.
99
99
 
100
+ Existing-checkout native T3 handoff: `aw switch --path /path/to/checkout --t3 "Task"`.
101
+ Use `--prompt-file` for UTF-8 input and `--permission` for an explicit permission mode.
102
+ It opens no UI; select the reported project/thread in your connected client. Same-intent
103
+ retries reconcile saved IDs. After resolution, a deliberate `--t3-intent followup-1`
104
+ starts another thread; never use a fresh intent to bypass uncertainty. Maintainers should
105
+ preserve repository-local receipts and retained locks during recovery. Conversation state
106
+ is not transferred.
107
+
100
108
  ## Uninstallation
101
109
 
102
110
  Inspect the conservative removal plan first, then consent explicitly:
package/bin/arashi.js CHANGED
@@ -188,7 +188,7 @@ export function detectNpmGlobalRoot(options = {}) {
188
188
 
189
189
  async function runPackageUninstall(argv, options) {
190
190
  if (argv.length === 1 && (argv[0] === "--help" || argv[0] === "-h")) {
191
- (options.log ?? console.log)(`Usage: arashi uninstall [options]
191
+ (options.log ?? console.log)(`Usage: aw uninstall [options]
192
192
 
193
193
  Conservatively remove a proven Arashi installation
194
194
 
package/bin/update.js CHANGED
@@ -383,7 +383,7 @@ async function runNpmManagedUpdateCore(argv = [], options = {}) {
383
383
  return 0;
384
384
  } catch (error) {
385
385
  errorLog(`Package updated, but binary refresh failed: ${error instanceof Error ? error.message : String(error)}`);
386
- errorLog("Run `arashi install` to retry the binary installation, or download a release manually.");
386
+ errorLog("Run `aw install` to retry the binary installation, or download a release manually.");
387
387
  return 1;
388
388
  }
389
389
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arashi",
3
- "version": "1.38.0",
3
+ "version": "1.40.0",
4
4
  "description": "Git worktree manager for meta-repositories - The eye of the storm for your development workflow",
5
5
  "keywords": [
6
6
  "cli",
@@ -40,6 +40,7 @@
40
40
  "bin/aw.bat",
41
41
  "bin/aw.ps1",
42
42
  "schema/config.schema.json",
43
+ "schema/user-config.schema.json",
43
44
  "scripts/uninstall.sh",
44
45
  "scripts/uninstall.ps1",
45
46
  "README.md",
@@ -73,9 +74,9 @@
73
74
  "lint": "oxlint -D no-explicit-any .",
74
75
  "lint:fix": "oxlint --fix -D no-explicit-any .",
75
76
  "lint:ci": "oxlint --format github -D no-explicit-any .",
76
- "schema:generate": "ts-json-schema-generator --tsconfig tsconfig.schema.json --path src/lib/config.ts --type Config --expose export --jsDoc extended --out schema/config.schema.json",
77
- "schema:publish": "pnpm run schema:generate && oxfmt --config .oxfmtrc.json --write schema/config.schema.json",
78
- "schema:check": "pnpm run schema:publish && git diff --exit-code -- schema/config.schema.json",
77
+ "schema:generate": "ts-json-schema-generator --tsconfig tsconfig.schema.json --path src/lib/config.ts --type Config --expose export --jsDoc extended --out schema/config.schema.json && ts-json-schema-generator --tsconfig tsconfig.schema.json --path src/lib/user-config.ts --type UserConfig --expose export --jsDoc extended --out schema/user-config.schema.json",
78
+ "schema:publish": "pnpm run schema:generate && oxfmt --config .oxfmtrc.json --write schema/config.schema.json schema/user-config.schema.json",
79
+ "schema:check": "pnpm run schema:publish && git diff --exit-code -- schema/config.schema.json schema/user-config.schema.json",
79
80
  "contract:generate": "node scripts/contracts/cli-commands.ts && node scripts/contracts/inline-lifecycle-hooks.ts && node scripts/contracts/executable-distribution.ts",
80
81
  "contract:check": "node scripts/contracts/cli-commands.ts --check && node scripts/contracts/inline-lifecycle-hooks.ts --check && node scripts/contracts/executable-distribution.ts --check",
81
82
  "executable-contract:generate": "node scripts/contracts/executable-distribution.ts",
@@ -13,6 +13,9 @@
13
13
  },
14
14
  "switch": {
15
15
  "$ref": "#/definitions/SwitchCommandDefaults"
16
+ },
17
+ "t3": {
18
+ "$ref": "#/definitions/T3Settings"
16
19
  }
17
20
  },
18
21
  "type": "object"
@@ -290,6 +293,43 @@
290
293
  "enum": ["auto", "cd", "launch", "sesh", "herdr"],
291
294
  "type": "string"
292
295
  },
296
+ "T3Settings": {
297
+ "additionalProperties": false,
298
+ "description": "Personal handoff choices; credentials and transport addresses never belong here.",
299
+ "properties": {
300
+ "baseDir": {
301
+ "description": "Official T3 data directory (absolute path).",
302
+ "minLength": 1,
303
+ "pattern": "^(?=(?:/|[A-Za-z]:[\\\\/]|\\\\\\\\))(?=[\\s\\S]*\\S)[^\\u0000-\\u001F]+$(?![\\s\\S])",
304
+ "type": "string"
305
+ },
306
+ "cli": {
307
+ "description": "Installed official t3 executable (command name or absolute path).",
308
+ "minLength": 1,
309
+ "pattern": "^(?=(?:/|[A-Za-z]:[\\\\/]|\\\\\\\\|[^/\\\\]+$))(?=[\\s\\S]*\\S)[^\\u0000-\\u001F]+$(?![\\s\\S])",
310
+ "type": "string"
311
+ },
312
+ "effort": {
313
+ "description": "Supported reasoning effort.",
314
+ "minLength": 1,
315
+ "pattern": "^(?=[\\s\\S]*\\S)[^\\u0000-\\u001F]+$(?![\\s\\S])",
316
+ "type": "string"
317
+ },
318
+ "model": {
319
+ "description": "Supported model slug or alias.",
320
+ "minLength": 1,
321
+ "pattern": "^(?=[\\s\\S]*\\S)[^\\u0000-\\u001F]+$(?![\\s\\S])",
322
+ "type": "string"
323
+ },
324
+ "provider": {
325
+ "description": "Configured provider instance id, or an unambiguous driver name.",
326
+ "minLength": 1,
327
+ "pattern": "^(?=[\\s\\S]*\\S)[^\\u0000-\\u001F]+$(?![\\s\\S])",
328
+ "type": "string"
329
+ }
330
+ },
331
+ "type": "object"
332
+ },
293
333
  "WorktreeNamingBranchSlashes": {
294
334
  "enum": ["preserve", "flatten"],
295
335
  "type": "string"
@@ -0,0 +1,193 @@
1
+ {
2
+ "$ref": "#/definitions/UserConfig",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "definitions": {
5
+ "CommandDefaultsConfig": {
6
+ "additionalProperties": false,
7
+ "properties": {
8
+ "create": {
9
+ "$ref": "#/definitions/CreateCommandDefaults"
10
+ },
11
+ "editors": {
12
+ "$ref": "#/definitions/EditorDefaultsConfig"
13
+ },
14
+ "switch": {
15
+ "$ref": "#/definitions/SwitchCommandDefaults"
16
+ },
17
+ "t3": {
18
+ "$ref": "#/definitions/T3Settings"
19
+ }
20
+ },
21
+ "type": "object"
22
+ },
23
+ "ConfigVersion": {
24
+ "const": "1.0.0",
25
+ "type": "string"
26
+ },
27
+ "CreateCommandDefaults": {
28
+ "additionalProperties": false,
29
+ "properties": {
30
+ "launch": {
31
+ "$ref": "#/definitions/CreateLaunchMode",
32
+ "description": "Post-create launch choice; omitted preserves built-in no-launch behavior"
33
+ },
34
+ "switch": {
35
+ "description": "Default to switching to the new worktree after create",
36
+ "type": "boolean"
37
+ }
38
+ },
39
+ "type": "object"
40
+ },
41
+ "CreateLaunchMode": {
42
+ "enum": ["none", "auto", "sesh", "herdr"],
43
+ "type": "string"
44
+ },
45
+ "EditorCommandDefaults": {
46
+ "additionalProperties": false,
47
+ "properties": {
48
+ "create": {
49
+ "$ref": "#/definitions/EditorCreateCommandDefaults",
50
+ "description": "Editor-scoped create defaults"
51
+ }
52
+ },
53
+ "type": "object"
54
+ },
55
+ "EditorCreateCommandDefaults": {
56
+ "additionalProperties": false,
57
+ "properties": {
58
+ "launch": {
59
+ "$ref": "#/definitions/CreateLaunchMode",
60
+ "description": "Post-create launch choice; omitted preserves built-in no-launch behavior"
61
+ },
62
+ "switch": {
63
+ "description": "Default to switching to the new worktree after create",
64
+ "type": "boolean"
65
+ }
66
+ },
67
+ "type": "object"
68
+ },
69
+ "EditorDefaultsConfig": {
70
+ "additionalProperties": false,
71
+ "properties": {
72
+ "cursor": {
73
+ "$ref": "#/definitions/EditorCommandDefaults"
74
+ },
75
+ "kiro": {
76
+ "$ref": "#/definitions/EditorCommandDefaults"
77
+ },
78
+ "vscode": {
79
+ "$ref": "#/definitions/EditorCommandDefaults"
80
+ }
81
+ },
82
+ "type": "object"
83
+ },
84
+ "SwitchCommandDefaults": {
85
+ "additionalProperties": false,
86
+ "properties": {
87
+ "mode": {
88
+ "$ref": "#/definitions/SwitchMode",
89
+ "description": "Preferred switch behavior and launcher when running switch"
90
+ }
91
+ },
92
+ "type": "object"
93
+ },
94
+ "SwitchMode": {
95
+ "enum": ["auto", "cd", "launch", "sesh", "herdr"],
96
+ "type": "string"
97
+ },
98
+ "T3Settings": {
99
+ "additionalProperties": false,
100
+ "description": "Personal handoff choices; credentials and transport addresses never belong here.",
101
+ "properties": {
102
+ "baseDir": {
103
+ "description": "Official T3 data directory (absolute path).",
104
+ "minLength": 1,
105
+ "pattern": "^(?=(?:/|[A-Za-z]:[\\\\/]|\\\\\\\\))(?=[\\s\\S]*\\S)[^\\u0000-\\u001F]+$(?![\\s\\S])",
106
+ "type": "string"
107
+ },
108
+ "cli": {
109
+ "description": "Installed official t3 executable (command name or absolute path).",
110
+ "minLength": 1,
111
+ "pattern": "^(?=(?:/|[A-Za-z]:[\\\\/]|\\\\\\\\|[^/\\\\]+$))(?=[\\s\\S]*\\S)[^\\u0000-\\u001F]+$(?![\\s\\S])",
112
+ "type": "string"
113
+ },
114
+ "effort": {
115
+ "description": "Supported reasoning effort.",
116
+ "minLength": 1,
117
+ "pattern": "^(?=[\\s\\S]*\\S)[^\\u0000-\\u001F]+$(?![\\s\\S])",
118
+ "type": "string"
119
+ },
120
+ "model": {
121
+ "description": "Supported model slug or alias.",
122
+ "minLength": 1,
123
+ "pattern": "^(?=[\\s\\S]*\\S)[^\\u0000-\\u001F]+$(?![\\s\\S])",
124
+ "type": "string"
125
+ },
126
+ "provider": {
127
+ "description": "Configured provider instance id, or an unambiguous driver name.",
128
+ "minLength": 1,
129
+ "pattern": "^(?=[\\s\\S]*\\S)[^\\u0000-\\u001F]+$(?![\\s\\S])",
130
+ "type": "string"
131
+ }
132
+ },
133
+ "type": "object"
134
+ },
135
+ "UserConfig": {
136
+ "additionalProperties": false,
137
+ "properties": {
138
+ "$schema": {
139
+ "description": "JSON Schema URL for editor validation/autocomplete",
140
+ "type": "string"
141
+ },
142
+ "defaults": {
143
+ "$ref": "#/definitions/CommandDefaultsConfig",
144
+ "description": "Personal command and editor defaults"
145
+ },
146
+ "version": {
147
+ "$ref": "#/definitions/ConfigVersion",
148
+ "description": "User configuration schema version"
149
+ },
150
+ "worktreeNaming": {
151
+ "$ref": "#/definitions/WorktreeNamingConfig",
152
+ "description": "Personal fallback worktree naming policy"
153
+ },
154
+ "worktreesDir": {
155
+ "description": "Personal fallback worktree directory; absolute paths are repository-qualified",
156
+ "type": "string"
157
+ }
158
+ },
159
+ "required": ["version"],
160
+ "type": "object"
161
+ },
162
+ "WorktreeNamingBranchSlashes": {
163
+ "enum": ["preserve", "flatten"],
164
+ "type": "string"
165
+ },
166
+ "WorktreeNamingConfig": {
167
+ "additionalProperties": false,
168
+ "description": "Filesystem naming policy for configured create destinations.",
169
+ "properties": {
170
+ "branchSlashes": {
171
+ "$ref": "#/definitions/WorktreeNamingBranchSlashes",
172
+ "description": "Preserve branch slash hierarchy or flatten slashes to hyphens"
173
+ },
174
+ "maxPathLength": {
175
+ "description": "Maximum UTF-16 code units for each absolute newly planned configured-worktree destination",
176
+ "maximum": 2147483647,
177
+ "minimum": 1,
178
+ "multipleOf": 1,
179
+ "type": "number"
180
+ },
181
+ "style": {
182
+ "$ref": "#/definitions/WorktreeNamingStyle",
183
+ "description": "Repository-shape-aware default, branch-only, or repository-prefixed naming"
184
+ }
185
+ },
186
+ "type": "object"
187
+ },
188
+ "WorktreeNamingStyle": {
189
+ "enum": ["default", "branch", "repo-branch"],
190
+ "type": "string"
191
+ }
192
+ }
193
+ }