@gajae-code/coding-agent 0.12.0 → 0.12.2
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/CHANGELOG.md +111 -0
- package/dist/types/async/job-manager.d.ts +17 -3
- package/dist/types/config/settings-schema.d.ts +56 -2
- package/dist/types/exa/mcp-client.d.ts +10 -1
- package/dist/types/exec/bash-executor.d.ts +45 -12
- package/dist/types/extensibility/extensions/types.d.ts +16 -2
- package/dist/types/extensibility/gjc-plugins/index.d.ts +12 -2
- package/dist/types/extensibility/gjc-plugins/installer.d.ts +63 -7
- package/dist/types/extensibility/gjc-plugins/lifecycle-reconciliation.d.ts +55 -0
- package/dist/types/extensibility/gjc-plugins/lifecycle.d.ts +64 -0
- package/dist/types/extensibility/gjc-plugins/runtime-quarantine.d.ts +67 -0
- package/dist/types/extensibility/gjc-plugins/session-validation.d.ts +3 -1
- package/dist/types/extensibility/gjc-plugins/types.d.ts +124 -0
- package/dist/types/gjc-runtime/launch-tmux.d.ts +1 -0
- package/dist/types/gjc-runtime/ralplan-review-conflicts.d.ts +114 -0
- package/dist/types/gjc-runtime/ralplan-runtime.d.ts +23 -3
- package/dist/types/gjc-runtime/team-launch.d.ts +1 -1
- package/dist/types/gjc-runtime/team-runtime.d.ts +25 -0
- package/dist/types/gjc-runtime/team-worker-heartbeat.d.ts +43 -0
- package/dist/types/gjc-runtime/tmux-owner-isolation.d.ts +10 -0
- package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +37 -80
- package/dist/types/modes/acp/acp-agent.d.ts +2 -19
- package/dist/types/modes/components/gjc-bundle-settings.d.ts +34 -0
- package/dist/types/modes/components/irc-sidebar.d.ts +16 -0
- package/dist/types/modes/components/notifications-settings-editor.d.ts +1 -0
- package/dist/types/modes/components/session-observer-overlay.d.ts +18 -0
- package/dist/types/modes/components/settings-selector.d.ts +9 -0
- package/dist/types/modes/components/status-line/gh.d.ts +5 -0
- package/dist/types/modes/components/transcript-viewer-overlay.d.ts +18 -1
- package/dist/types/modes/controllers/command-controller.d.ts +1 -1
- package/dist/types/modes/controllers/event-controller.d.ts +1 -1
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +2 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +1 -1
- package/dist/types/modes/interactive-mode.d.ts +9 -0
- package/dist/types/modes/theme/theme.d.ts +3 -1
- package/dist/types/modes/types.d.ts +32 -0
- package/dist/types/reminders/star-reminder.d.ts +3 -13
- package/dist/types/runtime-mcp/manager.d.ts +1 -0
- package/dist/types/sdk/acp/adapter.d.ts +3 -1
- package/dist/types/sdk/broker/transport.d.ts +2 -0
- package/dist/types/sdk/bus/attachment-registry.d.ts +1 -0
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +5 -1
- package/dist/types/sdk/bus/config.d.ts +6 -2
- package/dist/types/sdk/bus/index.d.ts +29 -0
- package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +8 -1
- package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +4 -0
- package/dist/types/sdk/bus/reconciliation-store.d.ts +7 -3
- package/dist/types/sdk/bus/rich-draft.d.ts +1 -0
- package/dist/types/sdk/bus/rich-render.d.ts +2 -0
- package/dist/types/sdk/bus/telegram-adoption-intent.d.ts +165 -0
- package/dist/types/sdk/bus/telegram-cli.d.ts +12 -0
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -4
- package/dist/types/sdk/bus/telegram-daemon.d.ts +25 -1
- package/dist/types/sdk/bus/telegram-reference.d.ts +11 -1
- package/dist/types/sdk/bus/threaded-render.d.ts +3 -2
- package/dist/types/sdk/bus/topic-registry.d.ts +11 -1
- package/dist/types/sdk/host/query/revision-store.d.ts +2 -0
- package/dist/types/sdk/host/reverse-leases.d.ts +1 -1
- package/dist/types/sdk/prompt-status.d.ts +23 -3
- package/dist/types/sdk/session.d.ts +6 -0
- package/dist/types/session/agent-session.d.ts +40 -2
- package/dist/types/session/artifacts.d.ts +8 -0
- package/dist/types/session/blob-store.d.ts +57 -4
- package/dist/types/session/internal/managed-session-storage.d.ts +30 -4
- package/dist/types/session/session-manager.d.ts +23 -6
- package/dist/types/session/session-storage.d.ts +4 -0
- package/dist/types/session/streaming-output.d.ts +36 -7
- package/dist/types/setup/credential-import.d.ts +12 -0
- package/dist/types/skill-state/active-state.d.ts +12 -0
- package/dist/types/skill-state/workflow-hud.d.ts +6 -0
- package/dist/types/task/executor.d.ts +3 -2
- package/dist/types/task/index.d.ts +7 -1
- package/dist/types/task/output-manager.d.ts +1 -0
- package/dist/types/task/provider-retry-status.d.ts +8 -0
- package/dist/types/task/receipt.d.ts +9 -1
- package/dist/types/task/types.d.ts +23 -0
- package/dist/types/tools/ask-answer-registry.d.ts +2 -2
- package/dist/types/tools/bash-interactive.d.ts +4 -1
- package/dist/types/tools/bash.d.ts +3 -1
- package/dist/types/tools/image-gen.d.ts +4 -0
- package/dist/types/tools/index.d.ts +6 -0
- package/dist/types/tools/output-meta.d.ts +23 -2
- package/dist/types/tools/path-utils.d.ts +1 -0
- package/dist/types/tools/read.d.ts +0 -6
- package/dist/types/tools/review.d.ts +5 -7
- package/dist/types/tools/subagent.d.ts +2 -0
- package/dist/types/utils/gh.d.ts +13 -0
- package/dist/types/utils/image-resize.d.ts +1 -0
- package/dist/types/web/search/providers/kimi.d.ts +2 -0
- package/dist/types/web/search/providers/searxng.d.ts +7 -0
- package/dist/types/web/search/providers/xai.d.ts +2 -0
- package/package.json +10 -8
- package/scripts/acp-conformance-agent.ts +218 -0
- package/scripts/capture-gjc-bundle-settings.ts +306 -0
- package/scripts/dogfood-ralplan-review-conflicts.ts +272 -0
- package/scripts/generate-sdk-operation-inventory.ts +5 -0
- package/scripts/resident-memory-bench.ts +1341 -0
- package/scripts/run-acp-conformance.ts +290 -0
- package/src/async/job-manager.ts +99 -39
- package/src/cli/fast-help.ts +1 -1
- package/src/cli/plugin-cli.ts +176 -18
- package/src/commands/team.ts +19 -1
- package/src/config/file-lock.ts +11 -2
- package/src/config/settings-schema.ts +53 -2
- package/src/coordinator-mcp/question-gate-codec.ts +1 -1
- package/src/coordinator-mcp/server.ts +5 -12
- package/src/debug/index.ts +42 -17
- package/src/defaults/gjc/skills/deep-interview/SKILL.md +1 -0
- package/src/defaults/gjc/skills/ralplan/SKILL.md +25 -20
- package/src/defaults/gjc/skills/team/SKILL.md +2 -0
- package/src/defaults/gjc/skills/ultragoal/SKILL.md +39 -26
- package/src/defaults/gjc/skills/ultragoal/validation-batch-contracts.md +12 -0
- package/src/defaults/gjc-defaults.ts +4 -4
- package/src/exa/mcp-client.ts +12 -3
- package/src/exec/bash-executor.ts +144 -27
- package/src/extensibility/extensions/runner.ts +15 -0
- package/src/extensibility/extensions/types.ts +18 -1
- package/src/extensibility/gjc-plugins/constrained-hooks.ts +8 -2
- package/src/extensibility/gjc-plugins/index.ts +19 -2
- package/src/extensibility/gjc-plugins/installer.ts +189 -50
- package/src/extensibility/gjc-plugins/lifecycle-reconciliation.ts +199 -0
- package/src/extensibility/gjc-plugins/lifecycle.ts +626 -0
- package/src/extensibility/gjc-plugins/observability.ts +3 -3
- package/src/extensibility/gjc-plugins/prompt-appendix.ts +5 -1
- package/src/extensibility/gjc-plugins/runtime-adapters.ts +12 -2
- package/src/extensibility/gjc-plugins/runtime-quarantine.ts +121 -0
- package/src/extensibility/gjc-plugins/schema.ts +84 -12
- package/src/extensibility/gjc-plugins/session-validation.ts +9 -3
- package/src/extensibility/gjc-plugins/types.ts +141 -0
- package/src/extensibility/gjc-plugins/validation.ts +9 -0
- package/src/gjc-runtime/launch-tmux.ts +25 -6
- package/src/gjc-runtime/launch-worktree.ts +103 -1
- package/src/gjc-runtime/ledger-event-renderer.ts +1 -0
- package/src/gjc-runtime/managed-owner-admission.ts +1 -1
- package/src/gjc-runtime/ralplan-review-conflicts.ts +472 -0
- package/src/gjc-runtime/ralplan-runtime.ts +491 -27
- package/src/gjc-runtime/team-launch.ts +8 -0
- package/src/gjc-runtime/team-runtime.ts +140 -32
- package/src/gjc-runtime/team-worker-heartbeat.ts +149 -0
- package/src/gjc-runtime/tmux-owner-isolation.ts +10 -0
- package/src/gjc-runtime/tmux-sessions.ts +58 -13
- package/src/gjc-runtime/ultragoal-evidence.ts +6 -74
- package/src/gjc-runtime/ultragoal-runtime.ts +635 -612
- package/src/gjc-runtime/workflow-manifest.generated.json +37 -99
- package/src/gjc-runtime/workflow-manifest.ts +21 -70
- package/src/internal-urls/docs-index.generated.ts +16 -16
- package/src/modes/DESIGN.md +104 -0
- package/src/modes/acp/acp-agent.ts +298 -186
- package/src/modes/components/gjc-bundle-settings.ts +508 -0
- package/src/modes/components/irc-sidebar.ts +30 -1
- package/src/modes/components/notifications-settings-editor.ts +12 -1
- package/src/modes/components/oauth-selector.ts +68 -30
- package/src/modes/components/session-observer-overlay.ts +305 -86
- package/src/modes/components/settings-selector.ts +56 -5
- package/src/modes/components/status-line/gh.ts +16 -0
- package/src/modes/components/tool-status-header.ts +3 -15
- package/src/modes/components/transcript-viewer-overlay.ts +99 -24
- package/src/modes/controllers/command-controller.ts +42 -34
- package/src/modes/controllers/event-controller.ts +27 -16
- package/src/modes/controllers/extension-ui-controller.ts +193 -34
- package/src/modes/controllers/selector-controller.ts +160 -22
- package/src/modes/interactive-mode.ts +189 -62
- package/src/modes/jobs-observer.ts +1 -1
- package/src/modes/runtime-init.ts +3 -0
- package/src/modes/theme/theme.ts +11 -9
- package/src/modes/types.ts +88 -0
- package/src/prompts/agent-fragments/ralplan-persistence.md +4 -3
- package/src/prompts/system/eager-todo.md +8 -4
- package/src/prompts/system/system-prompt.md +11 -4
- package/src/prompts/tools/bash.md +5 -5
- package/src/prompts/tools/search-tool-bm25.md +5 -0
- package/src/prompts/tools/task.md +1 -1
- package/src/reminders/star-reminder.ts +4 -42
- package/src/runtime-mcp/manager.ts +19 -4
- package/src/sdk/acp/adapter.ts +22 -6
- package/src/sdk/broker/lifecycle.ts +18 -13
- package/src/sdk/broker/transport.ts +35 -3
- package/src/sdk/bus/attachment-registry.ts +5 -1
- package/src/sdk/bus/chat-daemon-cli.ts +4 -39
- package/src/sdk/bus/chat-daemon-control.ts +7 -3
- package/src/sdk/bus/config.ts +18 -2
- package/src/sdk/bus/index.ts +661 -126
- package/src/sdk/bus/kind-aware-reconciliation.ts +148 -73
- package/src/sdk/bus/lifecycle-commands.ts +4 -1
- package/src/sdk/bus/lifecycle-control-runtime.ts +403 -88
- package/src/sdk/bus/reconciliation-store.ts +95 -16
- package/src/sdk/bus/rich-draft.ts +1 -1
- package/src/sdk/bus/rich-render.ts +2 -2
- package/src/sdk/bus/telegram-adoption-intent.ts +574 -0
- package/src/sdk/bus/telegram-cli.ts +33 -8
- package/src/sdk/bus/telegram-daemon-cli.ts +1 -0
- package/src/sdk/bus/telegram-daemon-contract.ts +12 -4
- package/src/sdk/bus/telegram-daemon.ts +916 -23
- package/src/sdk/bus/telegram-reference.ts +40 -3
- package/src/sdk/bus/threaded-render.ts +48 -3
- package/src/sdk/bus/topic-registry.ts +20 -0
- package/src/sdk/host/query/revision-store.ts +36 -2
- package/src/sdk/host/reverse-leases.ts +44 -7
- package/src/sdk/prompt-status.ts +16 -3
- package/src/sdk/protocol/operation-inventory.generated.json +33 -0
- package/src/sdk/session.ts +89 -9
- package/src/session/agent-session.ts +844 -173
- package/src/session/artifacts.ts +22 -0
- package/src/session/auth-broker-config.ts +10 -3
- package/src/session/blob-store.ts +915 -24
- package/src/session/internal/managed-session-scope.ts +200 -111
- package/src/session/internal/managed-session-storage.ts +492 -62
- package/src/session/session-manager.ts +1614 -435
- package/src/session/session-storage.ts +38 -45
- package/src/session/streaming-output.ts +238 -68
- package/src/setup/credential-import.ts +75 -13
- package/src/skill-state/active-state.ts +32 -0
- package/src/skill-state/workflow-hud.ts +17 -0
- package/src/skill-state/workflow-mutation-guard.ts +496 -2
- package/src/task/executor.ts +122 -39
- package/src/task/index.ts +280 -45
- package/src/task/output-manager.ts +24 -14
- package/src/task/provider-retry-status.ts +16 -0
- package/src/task/receipt.ts +34 -8
- package/src/task/render.ts +6 -2
- package/src/task/types.ts +108 -0
- package/src/tools/ask-answer-registry.ts +12 -6
- package/src/tools/ask.ts +86 -55
- package/src/tools/ast-edit.ts +1 -0
- package/src/tools/ast-grep.ts +1 -0
- package/src/tools/bash-interactive.ts +8 -3
- package/src/tools/bash.ts +503 -60
- package/src/tools/find.ts +1 -0
- package/src/tools/image-gen.ts +29 -5
- package/src/tools/index.ts +6 -0
- package/src/tools/output-meta.ts +108 -14
- package/src/tools/path-utils.ts +3 -2
- package/src/tools/read.ts +18 -0
- package/src/tools/review.ts +5 -7
- package/src/tools/search.ts +1 -0
- package/src/tools/subagent-render.ts +6 -2
- package/src/tools/subagent.ts +6 -0
- package/src/tools/telegram-send.ts +6 -3
- package/src/utils/gh.ts +39 -0
- package/src/utils/image-resize.ts +3 -0
- package/src/web/search/providers/anthropic.ts +4 -4
- package/src/web/search/providers/kimi.ts +15 -5
- package/src/web/search/providers/searxng.ts +47 -4
- package/src/web/search/providers/xai.ts +7 -2
- package/dist/types/gjc-runtime/ultragoal-pipeline.d.ts +0 -23
- package/src/defaults/gjc/skills/ultragoal/pipeline-validation-contracts.md +0 -30
- package/src/gjc-runtime/ultragoal-pipeline.ts +0 -306
package/src/modes/DESIGN.md
CHANGED
|
@@ -291,6 +291,59 @@ textual state without SGR. Korean, Japanese, Chinese, and mixed CJK/Latin prose
|
|
|
291
291
|
must wrap at semantic phrase boundaries, never through an action/status label or
|
|
292
292
|
short identifier; a semantic CJK break is a visual-QA failure.
|
|
293
293
|
|
|
294
|
+
### Direct-root anatomy, IRC lane, and pin boundary
|
|
295
|
+
|
|
296
|
+
The production root has one ordered, direct-child anatomy. Do not wrap, reorder,
|
|
297
|
+
or independently pin these regions:
|
|
298
|
+
|
|
299
|
+
1. `ircSplitView` is the viewport anchor and owns the transcript (and the IRC
|
|
300
|
+
sidebar when effective);
|
|
301
|
+
2. `pendingMessagesContainer`, `statusContainer`, `todoContainer`, and
|
|
302
|
+
`btwContainer` follow the anchor **before** the pin boundary;
|
|
303
|
+
3. `statusLine` is the pin boundary; and
|
|
304
|
+
4. `hookWidgetContainerAbove`, `editorContainer`, `petFloorContainer`, and
|
|
305
|
+
`hookWidgetContainerBelow` are the later direct composer children in that
|
|
306
|
+
order.
|
|
307
|
+
|
|
308
|
+
`statusContainer` is transient operation/status content in the pre-boundary
|
|
309
|
+
application flow; it is not the persistent `statusLine` telemetry rail. The
|
|
310
|
+
status line begins the fixed suffix. The focused editor, its cursor, and every
|
|
311
|
+
later direct composer child remain below that boundary during manual history,
|
|
312
|
+
streaming, and reflow. Pending messages, todo, and BTW therefore remain
|
|
313
|
+
transcript-adjacent rather than becoming accidental fixed chrome.
|
|
314
|
+
|
|
315
|
+
IRC has one shared work-lane geometry. At **64 cells or narrower** the IRC lane
|
|
316
|
+
is ineffective and transcript/todo use the full width. At **65 cells** it is
|
|
317
|
+
exactly **32 / 3 / 30** cells (left work lane / separator / IRC lane). At wider
|
|
318
|
+
sizes the same split calculation applies; todo uses the left work lane whenever
|
|
319
|
+
IRC is effective, including empty, streaming, and long IRC histories. Todo
|
|
320
|
+
does not create a second sidebar, a separately rounded width, or a different
|
|
321
|
+
collapse rule.
|
|
322
|
+
|
|
323
|
+
Todo is absent when empty. Populated todos support long text, multiple phases,
|
|
324
|
+
and collapsed/expanded views without crossing the separator or overflowing
|
|
325
|
+
their work lane. The active phase is retained in collapsed view; expanded view
|
|
326
|
+
keeps phase/task order. IRC empty, streaming, and long states preserve the
|
|
327
|
+
same root order and pin boundary.
|
|
328
|
+
|
|
329
|
+
Row reservation is content-priority based: reserve the focused composer and
|
|
330
|
+
status line first, then normal hooks; when height is constrained, drop the
|
|
331
|
+
manual-output notice first, then the decorative pet, then low-priority hooks.
|
|
332
|
+
A zero-row transcript capacity is valid. Neither reservation nor degradation
|
|
333
|
+
may hide focus/cursor geometry, move an anchor into pinned chrome, or turn a
|
|
334
|
+
resize into a follow/manual state change. Manual and follow paths, streaming
|
|
335
|
+
updates, width growth/shrink, and height growth/shrink preserve the anchor
|
|
336
|
+
semantics; resize must recompute the shared IRC/todo lane before rendering.
|
|
337
|
+
|
|
338
|
+
All lane measurement, clipping, and wrapping is ANSI-aware terminal-cell
|
|
339
|
+
measurement. Terminal graphics may be shown only where the effective layout
|
|
340
|
+
permits them and must degrade to the textual graphics fallback without changing
|
|
341
|
+
row ownership. ANSI/color output preserves visible cursor/focus state; ASCII
|
|
342
|
+
and no-color output retains textual selection/status affordances. CJK and mixed
|
|
343
|
+
CJK/Latin todo, IRC, status, and BTW text break at semantic phrase boundaries,
|
|
344
|
+
not inside a phase/action/status label, short identifier, or grapheme cluster.
|
|
345
|
+
Those defects, width overflow, overlap, hidden focus/cursor, and lost anchors
|
|
346
|
+
are blocking visual-QA failures.
|
|
294
347
|
### Sticky viewport deterministic visual QA
|
|
295
348
|
|
|
296
349
|
`test/fixtures/tui/sticky-viewport-showcase.ts` is a fixed-clock, no-network,
|
|
@@ -308,3 +361,54 @@ The immutable matrix has exactly 20 keys: `live-overflow`, `manual-history`,
|
|
|
308
361
|
`narrow-cjk/48x10/unicode-color`. Do not add or replace a manual-follow case.
|
|
309
362
|
|
|
310
363
|
Each key has only `terminal.txt`, ANSI-preserving `terminal-ansi.txt`, `terminal.html`, and `metadata.json`; the manifest records SHA-256 and byte length. Per-key metadata binds immutable font/render assumptions and the ANSI-aware wrapping/truncation policy. `VirtualTerminal` reconstructs ANSI from visible xterm cells, including cell padding, palette/RGB colors, attributes, and inverse video; plain text is always the stripped reconstruction. The verifier owns an independent literal 20-key oracle and fails closed unless stripped ANSI equals text, `terminal.html` equals the exported canonical `ansiToHtml(terminal-ansi.txt)` byte-for-byte (including its complete document envelope and global CSS), HTML independently preserves the ANSI style-run text, every retained row has the exact `Bun.stringWidth` cell width (including trailing spaces), and `ansi_mode` agrees with required Unicode color SGR or ASCII/no-color output. Every metadata entry has exact CJK phrase-boundary metadata: the narrow-CJK key has only the three canonical boundaries in order and every other key has `[]`. Manual captures prove successful production wheel and PageUp paths and retain observable historical transcript-row evidence. It validates exact payload paths (no duplicates or traversal), immutable source/output revisions, state/status/suffix order, notice cardinality, capacity, actual mouse-copied transcript-only selection, composer, CJK, and provenance invariants. `review-input.json` binds the exact manifest digest, capture author/executor identity, acceptance/design versions, required artifacts, narrow-CJK boundaries, and deterministic host matrix. `--require-independent-review` requires an attestation with an exact root key set; exact per-key result and artifact-check key sets; exact defect `{ description, accepted }` keys with a trimmed, nonblank description; canonical trimmed reviewer identity distinct from both bound identities; the independent-terminal-reviewer role; fixture revision; expected and observed counts of 20; exact checked keys; accepted per-key artifact-check/notes results; accepted artifact/CJK/host decisions; bound digest; and final `accept`. Any malformed, incomplete, or extra attestation content fails closed.
|
|
364
|
+
## GJC Bundles
|
|
365
|
+
|
|
366
|
+
GJC Bundles is a directly hosted Settings surface using the existing framed-list
|
|
367
|
+
grammar. A bundle identity is always displayed as its name plus `(user)` or
|
|
368
|
+
`(project)`. Same-name rows in opposite scopes are distinct identities and are
|
|
369
|
+
never merged, selected together, or mutated through one another.
|
|
370
|
+
|
|
371
|
+
Only safe source presentation is permitted. Never render or retain a raw source
|
|
372
|
+
locator, userinfo, query, fragment, token, authentication material, or a full
|
|
373
|
+
parent path in labels, descriptions, status, confirmation, errors, or evidence.
|
|
374
|
+
|
|
375
|
+
Persisted enablement is user intent: bundle and eligible-surface enabled or
|
|
376
|
+
disabled state. Effective runtime status is advisory display evidence only and
|
|
377
|
+
never acts as hidden authorization. Deterministic quarantine blocks an enable
|
|
378
|
+
action; disable is always available. Runtime evidence does not alter either
|
|
379
|
+
rule.
|
|
380
|
+
|
|
381
|
+
Focus, cursor, wrapping, ANSI-aware cell measurement, CJK semantic wrapping,
|
|
382
|
+
and list scrolling follow the existing settings contracts above. Up/Down wrap
|
|
383
|
+
within lists. A non-cancellable bundle mutation visibly locks navigation,
|
|
384
|
+
including Escape and tab changes, until it completes; the lock names its
|
|
385
|
+
reason. Long names and descriptions wrap in allocated content regions without
|
|
386
|
+
hiding scope identity, CJK text breaks only at semantic boundaries, ANSI styles
|
|
387
|
+
do not affect width measurement, and long surface lists scroll while retaining
|
|
388
|
+
the focused row and scroll position.
|
|
389
|
+
|
|
390
|
+
This Settings surface does not install or uninstall bundles, edit sources, or
|
|
391
|
+
repair quarantine. It supports only list/detail, update review/apply,
|
|
392
|
+
bundle-toggle, and eligible-surface-toggle actions.
|
|
393
|
+
|
|
394
|
+
### Create-only refusal and source reachability
|
|
395
|
+
|
|
396
|
+
An already-installed target is refused with `already_installed_use_upgrade`,
|
|
397
|
+
independently of `--force`, and the refusal performs no filesystem mutation:
|
|
398
|
+
it is decided before any registry lock is acquired, because acquiring a lock
|
|
399
|
+
itself creates the scope root.
|
|
400
|
+
|
|
401
|
+
Refusal is bound to the bundle name declared in the manifest, because that name
|
|
402
|
+
*is* the identity component. When the source is a local directory the name is
|
|
403
|
+
read without resolving, so a deleted-and-recreated or offline-but-present source
|
|
404
|
+
still refuses correctly.
|
|
405
|
+
|
|
406
|
+
When the source cannot be read at all — a deleted directory, an unreachable git
|
|
407
|
+
remote, a missing tarball — the target's identity is genuinely unknowable before
|
|
408
|
+
resolution, so the operation resolves and reports the source failure instead of
|
|
409
|
+
refusing. Matching on the stored locator was tried and rejected as unsound: one
|
|
410
|
+
locator can resolve to different content over time, the same URI can back two
|
|
411
|
+
differently named bundles, and a stored `uri#ref` differs from a bare `uri`, so
|
|
412
|
+
locator-based refusal would refuse installs that should proceed. Refusing on a
|
|
413
|
+
guess is worse than reporting the real failure, so identity must be readable for
|
|
414
|
+
refusal to apply.
|