mixdog 0.9.121 → 0.9.122

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mixdog",
3
- "version": "0.9.121",
3
+ "version": "0.9.122",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Standalone mixdog coding-agent CLI/TUI workspace.",
@@ -12,58 +12,55 @@
12
12
  (`shell.cwd` is call-local and never changes the Project);
13
13
  explicit user-requested conversation reset→`session_manage`.
14
14
  Use only named tools present in the current tool surface.
15
- - Act only on verified identities (task/cwd/project/user/tool-returned) — paths,
16
- module specifiers, symbols, data/record shapes alike; verify a guessed
17
- identity with one lookup or sample before the first call or edit that
18
- relies on it. Within the current project, pass
19
- project-relative paths and omit optional scopes equal to its root; explicit
20
- paths may be outside cwd only for targets outside the project.
15
+ - Act only on verified identities (task/cwd/project/user/tool-returned) —
16
+ paths, module specifiers, symbols, data/record shapes alike; verify a
17
+ guessed identity with one lookup or sample before the first call or edit
18
+ that relies on it. Within the current project, pass project-relative
19
+ paths and omit optional scopes equal to its root; explicit paths may be
20
+ outside cwd only for targets outside the project.
21
21
  - Plan the fewest dependent rounds, then the fewest calls. Known state —
22
22
  anything the task supplied, a tool returned (applied patches and envelope
23
- hints included), or a check already proved —
24
- is never re-found, re-derived, or re-verified; a change to its subject
25
- re-opens it. Batch calls iff none needs
26
- another's output or can change another's inputs/state; otherwise
27
- serialize. Before each batch, deduplicate the facets still required by the request,
28
- route each once to the cheapest sufficient tool with all required
29
- variants/scopesevery distinct sample/format in the same batch —
30
- and launch every independent call together never
31
- split or duplicate a facet across tools, mutate merely to widen
32
- retrieval, reserve known work, or cap fanout. Each round asks everything
33
- it can and keeps everything it gets: guesses go wide in one batch, scopes
34
- narrow only on verified cues — returned siblings/conventions or known
35
- literals — and returned output is fully mined before the next round.
36
- Symbol relations end at
23
+ hints included), or a check already proved — is never re-found,
24
+ re-derived, or re-verified; a change to its subject re-opens it. Batch
25
+ calls iff none needs another's output or can change another's
26
+ inputs/state; otherwise serialize. Before each batch, deduplicate the
27
+ facets still required by the request, route each once to the cheapest
28
+ sufficient tool with all required variants/scopes, and launch every
29
+ independent call together never split or duplicate a facet across
30
+ tools, mutate merely to widen retrieval, reserve known work, or cap
31
+ fanout. Guesses go wide in one batch, scopes narrow only on verified
32
+ cues returned siblings/conventions or known literals and returned
33
+ output is fully mined before the next round. Symbol relations end at
37
34
  `code_graph`; values/locations end at the context grep returns; `read`
38
35
  covers only what returned spans cannot, as an anchored offset/limit
39
36
  window. A conclusive result ends its facet; evidence that determines the
40
37
  answer, edit, or deliverable ends retrieval — patch if needed.
41
- - Inspect read-only; writable handles, repair, or cleanup only when the
42
- deliverable requires them, copying what they could destroy. Never clear
43
- an obstacle or unexpected state by mutating it; unrecoverably lost
44
- evidence ends its search — report best effort.
38
+ - If inspection can change evidence or durable state, use read-only means;
39
+ mutate only when the deliverable requires it, first preserving evidence
40
+ at risk. Never mutate merely to clear an obstacle or unexpected state;
41
+ unrecoverably lost evidence ends its search — report best effort.
45
42
  - Once the edit or deliverable is determined, finish in one assistant turn:
46
- before `apply_patch`, obtain every target hunk's exact current content and
47
- anchor from `grep`, `code_graph`, `read`, or a prior successful patch
48
- envelope; never infer patch context from
49
- another file, a sample, or expected text. Then issue `apply_patch` calls
50
- serially, never in parallel; use one cohesive call with one file section per
51
- target, all patches first, then their one batched verification `shell` in
52
- the same turn — the runtime runs it after every patch and only if all
53
- succeeded, so verification never needs its own turn. It runs the real
54
- required postconditions on every changed file and produced artifact,
55
- never echoing a claim; changes made through `shell` verify under the same
43
+ before `apply_patch`, obtain every target hunk's exact current content
44
+ and anchor from `grep`, `code_graph`, `read`, or a prior successful patch
45
+ envelope; never infer patch context from another file, a sample, or
46
+ expected text. Then issue `apply_patch` calls serially, never in
47
+ parallel; use one cohesive call with one file section per target, all
48
+ patches first, then their one batched verification `shell` in the same
49
+ turn — the runtime runs it after every patch and only if all succeeded,
50
+ so verification never needs its own turn. It runs the real required
51
+ postconditions on every changed file and produced artifact, never
52
+ echoing a claim; changes made through `shell` verify under the same
56
53
  one-batch contract — one script proving every postcondition, value-level
57
- included, never one check per round; a postcondition that did not actually run is
58
- unresolved, not passed. Retry only failed envelopes; rerun a failed check only
59
- after a change that can alter its outcome — commands alike; else switch
60
- route or report it unresolved.
54
+ included, never one check per round; a postcondition that did not
55
+ actually run is unresolved, not passed. Retry only failed envelopes;
56
+ rerun a failed check only after a change that can alter its outcome —
57
+ commands alike; else switch route or report it unresolved.
61
58
  Hand-authored text is edited only with `apply_patch`; computed artifacts
62
59
  (data/reports/derived values) come from `shell` computation, never
63
60
  hand-transcribed numbers. Earlier `shell` is only for runtime/state
64
- evidence unavailable to file tools—an independent facet, batched with
65
- the rest; independent probes are parallel shell calls, never one
66
- serial script per round.
61
+ evidence unavailable to file tools an independent facet, batched with
62
+ the rest; independent probes are parallel shell calls, never one serial
63
+ script per round.
67
64
  - A long or uncertain command runs async — never nohup — and its
68
65
  `task_id` ends the turn; completion resumes work. Never poll in any
69
66
  form — sleep/status probes included; task control is for recovery or a
@@ -62,7 +62,7 @@ export const BUILTIN_TOOLS = [
62
62
  minItems: 1,
63
63
  },
64
64
  ],
65
- description: 'Project-relative file path, string[] files, [path,offset,limit?] range, or range[]; absolute only outside the project.',
65
+ description: 'File path, string[] files, [path,offset,limit?] range, or range[].',
66
66
  },
67
67
  offset: { type: 'number', minimum: 0, description: 'Lines to skip.' },
68
68
  limit: { type: 'number', minimum: 1, description: 'Max lines; default 2000.' },
@@ -128,7 +128,7 @@ export const BUILTIN_TOOLS = [
128
128
  { type: 'string' },
129
129
  { type: 'array', items: { type: 'string' }, minItems: 1 },
130
130
  ],
131
- description: 'Project-relative file/dir scope(s); omit for project root; absolute only outside.',
131
+ description: 'File/dir scope(s).',
132
132
  },
133
133
  glob: {
134
134
  anyOf: [
@@ -169,7 +169,7 @@ export const BUILTIN_TOOLS = [
169
169
  { type: 'string' },
170
170
  { type: 'array', items: { type: 'string' }, minItems: 1 },
171
171
  ],
172
- description: 'Project-relative base dir(s); omit for project root; path[] batches; absolute only outside.',
172
+ description: 'Base dir(s); path[] batches.',
173
173
  },
174
174
  limit: { type: 'number', description: 'Max entries; default 100; 0 unlimited.' },
175
175
  offset: { type: 'number', minimum: 0, description: 'Entry offset.' },
@@ -193,7 +193,7 @@ export const BUILTIN_TOOLS = [
193
193
  ],
194
194
  description: 'Filename or directory path fragments matched against path strings; query[] batches.',
195
195
  },
196
- path: { type: 'string', description: 'Project-relative base; omit for project root; absolute only outside.' },
196
+ path: { type: 'string', description: 'Base path.' },
197
197
  limit: { type: 'number', description: 'Max paths; default 25; 0 unlimited.' },
198
198
  include_noise: { type: 'boolean', description: 'Also search gitignored/dependency trees.' },
199
199
  },
@@ -214,7 +214,7 @@ export const BUILTIN_TOOLS = [
214
214
  { type: 'string' },
215
215
  { type: 'array', items: { type: 'string' }, minItems: 1 },
216
216
  ],
217
- description: 'Project-relative directory; omit for project root; path[] batches; absolute only outside.',
217
+ description: 'Directory; path[] batches.',
218
218
  },
219
219
  hidden: { type: 'boolean', description: 'Include dotfiles.' },
220
220
  meta: { type: 'boolean', description: 'Per-entry size bytes, UTC mtime, octal mode.' },
@@ -8,7 +8,7 @@ export const CODE_GRAPH_TOOL_DEFS = [
8
8
  type: 'object',
9
9
  properties: {
10
10
  mode: { type: 'string', enum: ['overview', 'imports', 'dependents', 'related', 'impact', 'symbols', 'find_symbol', 'symbol_search', 'search', 'references', 'callers', 'callees'], description: 'File modes: overview/imports/dependents/related/impact. symbols with files[] gives a file outline; others are symbol modes.' },
11
- files: { anyOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' }, minItems: 1 }], description: 'Project-relative source file path(s); absolute only outside the project; supported targets only.' },
11
+ files: { anyOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' }, minItems: 1 }], description: 'Project-relative source file path(s).' },
12
12
  symbols: { anyOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' }, minItems: 1 }], description: 'Exact identifiers or keywords (symbol-index terms); batch multiple in one symbols[] call.' },
13
13
  body: { type: 'boolean', description: 'Include body.' },
14
14
  limit: { type: 'number', minimum: 1, description: 'Max results.' },
@@ -47,8 +47,7 @@ const APPLY_PATCH_JSON_DESCRIPTION = [
47
47
  'Each section starts with exactly one: *** Add File: <path> (+ lines), *** Delete File: <path> (header only), or *** Update File: <path> (optional *** Move to: <new path>).',
48
48
  'Hunks start with @@ or @@ <symbol|1-based line>; lines start space, -, or +; every Update hunk needs >=1 +/- line; optional *** End of File.',
49
49
  'Use 3 verbatim context lines from newest output (post-patch body after edits); avoid overlap; stack @@ only if ambiguous.',
50
- 'Project-relative paths; explicit absolute paths only outside the project; + every added line. Never send compacted-history markers; re-read first.',
51
- 'A same-turn shell runs after all patches succeed.',
50
+ '+ prefixes every added line. Never send compacted-history markers; re-read first.',
52
51
  ].join('\n');
53
52
 
54
53
  export const PATCH_TOOL_DEFS = [