codehere 1.0.1 → 1.0.3
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 +35 -193
- package/dist/application/use-cases/check-claimed-tests.js +81 -0
- package/dist/application/use-cases/detect-test-weakening.js +237 -0
- package/dist/application/use-cases/rerun-tests.js +110 -7
- package/dist/index.js +38 -1212
- package/dist/infrastructure/orchestration/artifacts-extractor.js +2 -323
- package/dist/presentation/cli/commands/check-command.js +178 -23
- package/dist/presentation/cli/commands/help-command.js +21 -285
- package/dist/ui.js +5 -236
- package/dist/utils/version.js +0 -6
- package/package.json +9 -38
- package/dist/application/services/verdict-service.js +0 -154
- package/dist/application/use-cases/assess-cross-vendor.js +0 -126
- package/dist/application/use-cases/build-cross-vendor-verdict.js +0 -118
- package/dist/application/use-cases/domain-trust.js +0 -110
- package/dist/application/use-cases/export-aat.js +0 -107
- package/dist/application/use-cases/generate-acceptance-criteria.js +0 -223
- package/dist/application/use-cases/generate-final-report.js +0 -259
- package/dist/application/use-cases/generate-narration.js +0 -130
- package/dist/application/use-cases/generate-thread-title.js +0 -181
- package/dist/application/use-cases/narrator-prompt-template.js +0 -158
- package/dist/application/use-cases/plan-auto-review.js +0 -57
- package/dist/application/use-cases/reconcile-audit.js +0 -100
- package/dist/application/use-cases/search-sessions.js +0 -70
- package/dist/application/use-cases/should-auto-review.js +0 -71
- package/dist/application/use-cases/thread-export.js +0 -245
- package/dist/application/use-cases/verify-claim.js +0 -456
- package/dist/application/use-cases/write-pass.js +0 -277
- package/dist/domain/audit.js +0 -11
- package/dist/domain/services/codebase-detector.js +0 -85
- package/dist/domain/task.js +0 -91
- package/dist/error-handler.js +0 -139
- package/dist/infrastructure/completion/bash-completion.js +0 -29
- package/dist/infrastructure/completion/fish-completion.js +0 -17
- package/dist/infrastructure/completion/zsh-completion.js +0 -25
- package/dist/infrastructure/config/config-manager.js +0 -174
- package/dist/infrastructure/config/product-context.js +0 -49
- package/dist/infrastructure/context/adapters/drawio-source.js +0 -157
- package/dist/infrastructure/context/adapters/figma-source.js +0 -198
- package/dist/infrastructure/context/adapters/github-issue-source.js +0 -160
- package/dist/infrastructure/context/adapters/linear-source.js +0 -190
- package/dist/infrastructure/context/context-resolver.js +0 -144
- package/dist/infrastructure/context/context-source.js +0 -114
- package/dist/infrastructure/context/github-api.js +0 -110
- package/dist/infrastructure/context/github-device-flow.js +0 -65
- package/dist/infrastructure/context/oauth-flow.js +0 -207
- package/dist/infrastructure/context/oauth-store.js +0 -122
- package/dist/infrastructure/context/registry-bootstrap.js +0 -95
- package/dist/infrastructure/context/write-pass-resolver.js +0 -106
- package/dist/infrastructure/cost/budget-config.js +0 -114
- package/dist/infrastructure/cost/cost-router.js +0 -97
- package/dist/infrastructure/cost/spend-aggregator.js +0 -222
- package/dist/infrastructure/cost/team-ledger.js +0 -355
- package/dist/infrastructure/discovery/discovery-log.js +0 -85
- package/dist/infrastructure/hooks/audit-tip-signature.js +0 -336
- package/dist/infrastructure/hooks/claude-sdk-hook.js +0 -1018
- package/dist/infrastructure/hooks/hook-mode.js +0 -87
- package/dist/infrastructure/hooks/mirror-tool-call-to-audit.js +0 -49
- package/dist/infrastructure/hooks/pre-prompt-scan.js +0 -122
- package/dist/infrastructure/hooks/session-analyzer.js +0 -177
- package/dist/infrastructure/observability/execution-tracer.js +0 -227
- package/dist/infrastructure/orchestration/agent-adapter.js +0 -13
- package/dist/infrastructure/orchestration/agent-installer.js +0 -101
- package/dist/infrastructure/orchestration/agents-config-seed.js +0 -68
- package/dist/infrastructure/orchestration/aider-adapter.js +0 -611
- package/dist/infrastructure/orchestration/cassette-recorder.js +0 -120
- package/dist/infrastructure/orchestration/claude-code-adapter.js +0 -592
- package/dist/infrastructure/orchestration/codex-adapter.js +0 -574
- package/dist/infrastructure/orchestration/conductor-adapter.js +0 -416
- package/dist/infrastructure/orchestration/context-handoff.js +0 -162
- package/dist/infrastructure/orchestration/control/codex-control-surface.js +0 -99
- package/dist/infrastructure/orchestration/control/control-surface.js +0 -15
- package/dist/infrastructure/orchestration/detect-ollama.js +0 -75
- package/dist/infrastructure/orchestration/failover-classifier.js +0 -151
- package/dist/infrastructure/orchestration/failover-config.js +0 -67
- package/dist/infrastructure/orchestration/failover-policy.js +0 -106
- package/dist/infrastructure/orchestration/gemini-adapter.js +0 -663
- package/dist/infrastructure/orchestration/generic-cli-adapter.js +0 -689
- package/dist/infrastructure/orchestration/graphify-context.js +0 -209
- package/dist/infrastructure/orchestration/memory-injector.js +0 -380
- package/dist/infrastructure/orchestration/mocks/mock-agent-repl.js +0 -388
- package/dist/infrastructure/orchestration/mocks/mock-codex-app-server.js +0 -73
- package/dist/infrastructure/orchestration/mocks/mock-synthesis.js +0 -83
- package/dist/infrastructure/orchestration/mocks/resolve-agent-spawn.js +0 -37
- package/dist/infrastructure/orchestration/opencode-adapter.js +0 -580
- package/dist/infrastructure/orchestration/progress-aggregator.js +0 -906
- package/dist/infrastructure/orchestration/readiness.js +0 -103
- package/dist/infrastructure/orchestration/session-manager.js +0 -1590
- package/dist/infrastructure/orchestration/session-persistence.js +0 -394
- package/dist/infrastructure/orchestration/thread-key-store.js +0 -127
- package/dist/infrastructure/orchestration/write-pass-store.js +0 -38
- package/dist/infrastructure/protocols/cloud-sync.js +0 -207
- package/dist/infrastructure/protocols/mcp-helpers.js +0 -25
- package/dist/infrastructure/protocols/mcp-server-impl.js +0 -3935
- package/dist/infrastructure/protocols/mcp-tools.js +0 -401
- package/dist/infrastructure/protocols/probe-port.js +0 -36
- package/dist/infrastructure/protocols/thread-phase.js +0 -105
- package/dist/infrastructure/protocols/ui/app-script-artifacts.js +0 -121
- package/dist/infrastructure/protocols/ui/app-script-audit-footer.js +0 -44
- package/dist/infrastructure/protocols/ui/app-script-audit-verify.js +0 -56
- package/dist/infrastructure/protocols/ui/app-script-composer-cost.js +0 -588
- package/dist/infrastructure/protocols/ui/app-script-context-sources.js +0 -168
- package/dist/infrastructure/protocols/ui/app-script-conversation.js +0 -67
- package/dist/infrastructure/protocols/ui/app-script-drawer.js +0 -115
- package/dist/infrastructure/protocols/ui/app-script-failover.js +0 -133
- package/dist/infrastructure/protocols/ui/app-script-github.js +0 -113
- package/dist/infrastructure/protocols/ui/app-script-observer.js +0 -104
- package/dist/infrastructure/protocols/ui/app-script-onboarding.js +0 -80
- package/dist/infrastructure/protocols/ui/app-script-overlay.js +0 -203
- package/dist/infrastructure/protocols/ui/app-script-recovery.js +0 -136
- package/dist/infrastructure/protocols/ui/app-script-render.js +0 -166
- package/dist/infrastructure/protocols/ui/app-script-share.js +0 -78
- package/dist/infrastructure/protocols/ui/app-script-sidebar.js +0 -194
- package/dist/infrastructure/protocols/ui/app-script-tour.js +0 -78
- package/dist/infrastructure/protocols/ui/app-script-wpass.js +0 -312
- package/dist/infrastructure/protocols/ui/app-script.js +0 -2998
- package/dist/infrastructure/protocols/ui/font-faces.js +0 -7
- package/dist/infrastructure/protocols/ui/styles.js +0 -2147
- package/dist/infrastructure/protocols/ui/tokens.js +0 -96
- package/dist/infrastructure/protocols/ui-page-v2.js +0 -320
- package/dist/infrastructure/protocols/verify-page.js +0 -1677
- package/dist/infrastructure/security/file-collection.js +0 -118
- package/dist/infrastructure/security/fix-code.js +0 -144
- package/dist/infrastructure/security/fix-secret.js +0 -89
- package/dist/infrastructure/security/permissions-config.js +0 -235
- package/dist/infrastructure/security/scan-types.js +0 -10
- package/dist/infrastructure/security/ship-scan.js +0 -195
- package/dist/infrastructure/security/trust-scorer.js +0 -724
- package/dist/infrastructure/security/vibe-checks.js +0 -99
- package/dist/infrastructure/storage/atomic-write.js +0 -86
- package/dist/infrastructure/storage/cross-tool-agents.js +0 -268
- package/dist/infrastructure/storage/project-thread-migration.js +0 -237
- package/dist/infrastructure/storage/project-thread-mirror.js +0 -671
- package/dist/infrastructure/storage/project-thread-reader.js +0 -409
- package/dist/infrastructure/storage/project-thread-title-backfill.js +0 -214
- package/dist/monitoring.js +0 -212
- package/dist/presentation/cli/commands/audit-command.js +0 -201
- package/dist/presentation/cli/commands/budget-command.js +0 -79
- package/dist/presentation/cli/commands/config-command.js +0 -125
- package/dist/presentation/cli/commands/context-source-command.js +0 -217
- package/dist/presentation/cli/commands/hook-command.js +0 -265
- package/dist/presentation/cli/commands/init-command.js +0 -590
- package/dist/presentation/cli/commands/memory-command.js +0 -1031
- package/dist/presentation/cli/commands/narrator-command.js +0 -101
- package/dist/presentation/cli/commands/permission-command.js +0 -105
- package/dist/presentation/cli/commands/protocols-builder.js +0 -254
- package/dist/presentation/cli/commands/protocols-command.js +0 -84
- package/dist/presentation/cli/commands/repo-map-builder.js +0 -247
- package/dist/presentation/cli/commands/report-command.js +0 -403
- package/dist/presentation/cli/commands/scan-command.js +0 -52
- package/dist/presentation/cli/commands/scan-tool-command.js +0 -110
- package/dist/presentation/cli/commands/search-command.js +0 -51
- package/dist/presentation/cli/commands/setup-command.js +0 -330
- package/dist/presentation/cli/commands/status-command.js +0 -614
- package/dist/presentation/cli/commands/team-command.js +0 -256
- package/dist/presentation/cli/commands/thread-command.js +0 -370
- package/dist/presentation/cli/commands/trust-command.js +0 -328
- package/dist/presentation/cli/commands/verify-command.js +0 -298
- package/dist/presentation/cli/error-display.js +0 -328
- package/dist/presentation/cli/repl.js +0 -805
- package/dist/presentation/cli/task-deliverable.js +0 -153
- package/dist/testing/cassette.js +0 -125
- package/dist/testing/replay-adapter.js +0 -147
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The design tokens, in one place, for every page the daemon serves.
|
|
3
|
-
*
|
|
4
|
-
* Values AND names are DESIGN.md "Instrument" (2026-08-07). Change a token here
|
|
5
|
-
* and every surface moves together — which is the whole reason this file exists.
|
|
6
|
-
*
|
|
7
|
-
* Why this file exists: the product shipped three different "verified" greens.
|
|
8
|
-
* styles.ts said --allow:#84b594, verify-page.ts said #28c840 (a macOS traffic
|
|
9
|
-
* light), and DESIGN.md ratified a third. For a product whose claim is "green
|
|
10
|
-
* only when independently verified", one surface's green did not mean the same
|
|
11
|
-
* thing as another's.
|
|
12
|
-
*
|
|
13
|
-
* The semantic tokens say what they mean now: --verified / --caught, renamed
|
|
14
|
-
* from --allow / --block across 158 call sites. The aliases are deleted rather
|
|
15
|
-
* than left kind, because an undeclared token resolves to nothing instead of
|
|
16
|
-
* failing, so a resurrected --allow would silently drop the colour off a verdict.
|
|
17
|
-
* ui-token-gate.mjs carries a `retired-token` rule so it cannot come back.
|
|
18
|
-
*
|
|
19
|
-
* NOT DONE, do not read this file as "DESIGN.md is fully implemented":
|
|
20
|
-
* - --accent is still named --accent, not --ember (109 call sites, its own
|
|
21
|
-
* increment). The VALUE is right; only the name lags.
|
|
22
|
-
* - --blue survives in the wordmark gradient only. That is the logotype and it
|
|
23
|
-
* is synced with codehere-landing, so changing it is a cross-repo brand call
|
|
24
|
-
* and Ega's. Every other use was deleted; the gate enforces the carve-out.
|
|
25
|
-
*/
|
|
26
|
-
export const DESIGN_TOKENS = `
|
|
27
|
-
:root {
|
|
28
|
-
/* ── surfaces · graphite, TRUE neutral (DESIGN.md §5) ──────────────────
|
|
29
|
-
Deliberately not the old warm ramp: every peer reviewed on 2026-08-07
|
|
30
|
-
(Linear, Vercel, Sentry, Depot) is cool or neutral, and neutral reads as
|
|
31
|
-
instrument rather than either cosy room or blue console. */
|
|
32
|
-
--bg: #0e0f10; --bg-1: #16181a; --bg-2: #1e2124; --bg-3: #282c30;
|
|
33
|
-
--glass-1: rgba(232,234,236,0.025); --glass-2: rgba(232,234,236,0.03);
|
|
34
|
-
--glass-3: rgba(232,234,236,0.06); --glass-4: rgba(232,234,236,0.12);
|
|
35
|
-
--glass-5: rgba(232,234,236,0.15);
|
|
36
|
-
--fg: #e8eaec; --fg-90: rgba(232,234,236,0.90);
|
|
37
|
-
--fg-80: rgba(232,234,236,0.80); --fg-70: rgba(232,234,236,0.70);
|
|
38
|
-
--fg-50: rgba(232,234,236,0.50); --fg-40: rgba(232,234,236,0.45);
|
|
39
|
-
--fg-30: rgba(232,234,236,0.28); --fg-20: rgba(232,234,236,0.20);
|
|
40
|
-
--border: rgba(232,234,236,0.09); --border-soft: rgba(232,234,236,0.055);
|
|
41
|
-
|
|
42
|
-
/* ── the accent · the human, and the only warm colour in the product ──
|
|
43
|
-
The named risk of an instrument aesthetic is that it goes cold. This is
|
|
44
|
-
the fix. Never decorative, never a status. */
|
|
45
|
-
--accent: #ff9a76; --accent-soft: #f5c6b0; --accent-wash: rgba(255,154,118,0.10);
|
|
46
|
-
|
|
47
|
-
/* ── semantic state (DESIGN.md §1 · the trust rule) ────────────────────
|
|
48
|
-
--verified is reachable ONLY from MEASURED evidence: something codehere
|
|
49
|
-
re-executed and can machine-check. An LLM judgement may never render in
|
|
50
|
-
it. --warn carries JUDGED as well as budget/partial. */
|
|
51
|
-
--verified: #7fc39a; --caught: #e2827f;
|
|
52
|
-
--warn: #d9a441;
|
|
53
|
-
--info: #8ab8ee;
|
|
54
|
-
|
|
55
|
-
/* DEPRECATED · DESIGN.md §5 bans a second accent. 16 var refs + 23 raw
|
|
56
|
-
#4a90e2 across ui.ts, mcp-server-impl.ts, styles.ts, app-script.ts and
|
|
57
|
-
verify-page.ts. Deleting it is its own increment; it is kept here so the
|
|
58
|
-
product does not render invalid CSS in the meantime. */
|
|
59
|
-
--blue: #4a90e2; --blue-soft: #8ab8ee; --blue-wash: rgba(74,144,226,0.08);
|
|
60
|
-
|
|
61
|
-
/* ── type scale · CLOSED at six values (DESIGN.md §6) ──────────────────
|
|
62
|
-
Closed is what makes it enforceable. scripts/ui-token-gate.mjs allows
|
|
63
|
-
exactly this set and nothing else. */
|
|
64
|
-
--fs-reading: 40px; /* the one measured fact per card */
|
|
65
|
-
--fs-title: 20px; /* room and section titles */
|
|
66
|
-
--fs-body: 14.5px; /* anything said */
|
|
67
|
-
--fs-ui: 13px; /* controls, rail, cards */
|
|
68
|
-
--fs-fact: 12px; /* costs, counts, hashes */
|
|
69
|
-
--fs-label: 10.5px; /* instrument marks, column heads */
|
|
70
|
-
|
|
71
|
-
/* ── spacing · 4px base, 9 steps ── */
|
|
72
|
-
--sp-0: 2px; --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px;
|
|
73
|
-
--sp-5: 24px; --sp-6: 32px; --sp-7: 48px; --sp-8: 64px;
|
|
74
|
-
|
|
75
|
-
/* ── radius · tight corners are instrument corners ── */
|
|
76
|
-
--r-sm: 2px; --r-md: 4px;
|
|
77
|
-
--radius: 4px; --radius-chip: 2px;
|
|
78
|
-
|
|
79
|
-
/* ── motion · 200ms default, 300ms max, one canonical ease ── */
|
|
80
|
-
--dur: 200ms; --dur-max: 300ms;
|
|
81
|
-
--ease: cubic-bezier(0.16, 1, 0.3, 1);
|
|
82
|
-
|
|
83
|
-
/* ── typefaces · DESIGN.md §6, one superfamily, three jobs ────────────
|
|
84
|
-
IBM Plex was drawn for an engineering company: machine authority without
|
|
85
|
-
costume, and absent from this category where everything is Inter or a
|
|
86
|
-
Geist-shaped substitute. Self-hosted base64 via FONT_FACES, zero external
|
|
87
|
-
fetch — that constraint never changes.
|
|
88
|
-
The load-bearing rule: anything SAID is sans, anything a machine RECORDED
|
|
89
|
-
is mono. --display is Mono because the biggest thing on a surface is a
|
|
90
|
-
measured fact, never a heading (DESIGN.md §0). */
|
|
91
|
-
--sans: var(--voice);
|
|
92
|
-
--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
|
|
93
|
-
--voice: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
94
|
-
--display: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
95
|
-
}`;
|
|
96
|
-
//# sourceMappingURL=tokens.js.map
|
|
@@ -1,320 +0,0 @@
|
|
|
1
|
-
import { SHARED_STYLES } from './ui/styles.js';
|
|
2
|
-
import { FONT_FACES } from './ui/font-faces.js';
|
|
3
|
-
import { APP_SCRIPT } from './ui/app-script.js';
|
|
4
|
-
export const TASK_HTML_V2 = `<!doctype html>
|
|
5
|
-
<html lang="en">
|
|
6
|
-
<head>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
9
|
-
<!-- S16 · one brand everywhere · favicon = the landing's gradient-C (served
|
|
10
|
-
locally from /icon.svg, never hotlinked) · title follows the landing's
|
|
11
|
-
'codehere · <context>' pattern with an honest local context. -->
|
|
12
|
-
<link rel="icon" type="image/svg+xml" href="/icon.svg" />
|
|
13
|
-
<title>codehere · alpha · local</title>
|
|
14
|
-
<style>${FONT_FACES}${SHARED_STYLES}</style>
|
|
15
|
-
</head>
|
|
16
|
-
<body>
|
|
17
|
-
<div class="app">
|
|
18
|
-
<!-- S13 · header 9->3: wordmark · ONE live context pill (local + spend) ·
|
|
19
|
-
⌘K hint. Beta chip, budget chip, lenses, density, reshape,
|
|
20
|
-
share, gear all live INSIDE the ⌘K palette now — same functions,
|
|
21
|
-
one keystroke away (rule 1 + rule 9). -->
|
|
22
|
-
<div class="header">
|
|
23
|
-
<span class="logo" onclick="goHome()" style="cursor:pointer" title="Home"><span class="name">codehere</span><span class="prerelease" title="pre-release · v0.9 · not yet validated with real users">alpha</span></span>
|
|
24
|
-
<span class="local-pill" title="Running locally · no telemetry · state on disk at ~/.codehere">
|
|
25
|
-
<span class="dot"></span>Local<span class="budget safe" id="budget"></span>
|
|
26
|
-
</span>
|
|
27
|
-
<!-- Spend & Audit moved into the sidebar rail (nav option B, 2026-07-07) — the rail is THE navigator. -->
|
|
28
|
-
<button class="cmdk-hint" id="cmdk-open" title="Commands & search · ⌘K" aria-label="Open the command palette"><span class="kbd">⌘K</span></button>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
<!-- v0.8 S3 · Custom-view banner · appears when reshape is active -->
|
|
32
|
-
<div class="custom-view-banner" id="custom-view-banner">
|
|
33
|
-
<span class="lbl">custom view</span>
|
|
34
|
-
<span class="prompt" id="custom-view-prompt"></span>
|
|
35
|
-
<span class="reset" onclick="resetShape()">reset</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
<!-- Failover banner · ported from v1 on /v1 kill 2026-05-23 -->
|
|
39
|
-
<div class="failover-banner" id="failover-banner"></div>
|
|
40
|
-
|
|
41
|
-
<!-- C-01 · first-run indexing banner · auto-hides once you have ≥ 3 sessions -->
|
|
42
|
-
<div class="indexing-banner" id="indexing-banner">
|
|
43
|
-
<span class="what">first run</span>
|
|
44
|
-
<span>codehere indexed your repo locally · zero telemetry · all state at <code>~/.codehere/</code></span>
|
|
45
|
-
</div>
|
|
46
|
-
|
|
47
|
-
<!-- F-01 · budget threshold warning · only renders when daily spend >= 80% of cap -->
|
|
48
|
-
<div class="budget-banner" id="budget-banner">
|
|
49
|
-
<span class="what" id="budget-banner-what"></span>
|
|
50
|
-
<span id="budget-banner-msg"></span>
|
|
51
|
-
<span class="hint">subscription & free-tier agents (e.g. Cursor) still run</span>
|
|
52
|
-
</div>
|
|
53
|
-
|
|
54
|
-
<!-- Cockpit shell (Phase-1 S1): a persistent Projects sidebar beside the main
|
|
55
|
-
pane. The main pane reuses the existing list/room/detail views unchanged. -->
|
|
56
|
-
<div class="shell">
|
|
57
|
-
<aside class="sidebar" id="sidebar" aria-label="Projects"></aside>
|
|
58
|
-
<div class="content">
|
|
59
|
-
<div id="task-list-view" class="content-inner">
|
|
60
|
-
<!-- First-run: a non-blocking, dismissible value-first welcome card (renderWelcomeCard),
|
|
61
|
-
NOT a full-screen overlay. Sits above the workspace, which stays usable underneath. -->
|
|
62
|
-
<div id="home-welcome" style="display:none"></div>
|
|
63
|
-
<!-- S13 · "NEEDS YOUR DECISION" — the FIRST thing on the page and the
|
|
64
|
-
ONLY orange. Rendered by renderDecisions() from REAL state only
|
|
65
|
-
(pending write-passes + verifier-broken verdicts today + failed
|
|
66
|
-
runs with retry available today). Empty -> does not render AT ALL
|
|
67
|
-
(data-verify-unit removed so H14 can pin absent <=> N===0). -->
|
|
68
|
-
<div id="decision-queue" style="display:none"></div>
|
|
69
|
-
<!-- F-02 · cross-worktree alert · only visible when any out-of-cwd session has run > 5m -->
|
|
70
|
-
<span class="worktree-alert" id="worktree-alert" onclick="if(window._wkTarget)showD(window._wkTarget)">
|
|
71
|
-
<span class="pulse-dot"></span><span id="worktree-alert-text" data-user-content>other worktree</span>
|
|
72
|
-
</span>
|
|
73
|
-
<!-- Observer (Thariq loop-2): at rest a calm ONE-LINE row above TODAY
|
|
74
|
-
("● watching N terminal sessions · M live"), expandable to the
|
|
75
|
-
full rail; first-run keeps the teach state. -->
|
|
76
|
-
<div id="observer-rail" style="display:none"></div>
|
|
77
|
-
<!-- S12->S13 · the hero element. With tasks today it renders the TODAY
|
|
78
|
-
day-line ("TODAY · N AGENTS · N CLAIMS CHECKED · $X.XX") and keeps
|
|
79
|
-
carrying the data-verify-hero-* stamps (H13, derivations unchanged
|
|
80
|
-
via heroCounts). Zero tasks today -> the first-run hero with its
|
|
81
|
-
teach copy, ordered to the top via body.first-run. -->
|
|
82
|
-
<div class="home-hero" id="home-hero" style="display:none" data-verify-unit="home-hero" data-verify-hero-mode="first-run"></div>
|
|
83
|
-
<!-- S13 · active-filter token · filters live in ⌘K; the applied filter
|
|
84
|
-
shows as ONE removable token, not a tab bar. -->
|
|
85
|
-
<div id="filter-token" style="display:none"></div>
|
|
86
|
-
<div id="task-list">
|
|
87
|
-
<div class="skeleton" id="skeleton">
|
|
88
|
-
<div class="skeleton-card"><span class="sk-sweep"></span></div>
|
|
89
|
-
<div class="skeleton-card"><span class="sk-sweep"></span></div>
|
|
90
|
-
<div class="skeleton-card"><span class="sk-sweep"></span></div>
|
|
91
|
-
<div class="skeleton-card"><span class="sk-sweep"></span></div>
|
|
92
|
-
</div>
|
|
93
|
-
</div>
|
|
94
|
-
</div>
|
|
95
|
-
<div id="task-detail-view" style="display:none" class="content-inner">
|
|
96
|
-
<div id="detail-view"></div>
|
|
97
|
-
<div class="input-area" style="border-top:none;padding:12px 0">
|
|
98
|
-
<div class="input-bar" style="max-width:100%">
|
|
99
|
-
<textarea class="input-ta composer-bar" id="detail-ta" placeholder="Request changes or ask a question..." rows="1" disabled></textarea>
|
|
100
|
-
<div class="input-meta composer-meta"><span class="pick-agent" title="Auto-pick · best agent for this task">› Auto</span><span class="cost-est" id="cost-est-detail" data-verify-unit="cost-est" title="Estimated cost">…</span></div>
|
|
101
|
-
<button class="send-btn composer-send" id="detail-btn" disabled aria-label="Send follow-up">↑</button>
|
|
102
|
-
</div>
|
|
103
|
-
<div class="send-fail" id="detail-send-fail" style="display:none"></div>
|
|
104
|
-
</div>
|
|
105
|
-
</div>
|
|
106
|
-
<!-- Spend & Audit: the team cost + audit ledger as its own page (nav tab), not a banner on the workspace. -->
|
|
107
|
-
<div id="spend-view" style="display:none" class="content-inner">
|
|
108
|
-
<div id="team-cost-hero"></div>
|
|
109
|
-
</div>
|
|
110
|
-
</div>
|
|
111
|
-
</div>
|
|
112
|
-
|
|
113
|
-
<div class="input-area">
|
|
114
|
-
<!-- GitHub import row · populated by initGhImport(): a Connect button when
|
|
115
|
-
disconnected, or a repo field + issue PICKER when connected. -->
|
|
116
|
-
<div id="gh-import" class="gh-import"></div>
|
|
117
|
-
<div class="input-bar">
|
|
118
|
-
<textarea class="input-ta composer-bar" id="main-ta" placeholder="Describe a task or ask a question..." rows="1"></textarea>
|
|
119
|
-
<div class="input-meta composer-meta"><span class="agentpick-wrap"><input type="hidden" id="agent-pick" value="auto"><button type="button" class="agentpick" id="agentpick-btn" aria-haspopup="listbox" aria-expanded="false" title="Who runs this task · Auto picks the best fit" onclick="toggleAgentMenu(event)"><span id="agentpick-cur" class="agentpick-cur"></span><svg class="agentpick-car" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 9l6 6 6-6"/></svg></button><div class="agentpick-menu" id="agentpick-menu" role="listbox" aria-label="Pick the agent for this task" hidden></div></span><span class="cost-est" id="cost-est-main" data-verify-unit="cost-est" title="Estimated cost">…</span></div>
|
|
120
|
-
<button class="send-btn composer-send" id="main-btn" aria-label="Send task">↑</button>
|
|
121
|
-
</div>
|
|
122
|
-
<div class="send-fail" id="main-send-fail" style="display:none"></div>
|
|
123
|
-
<div class="kbd-hint">
|
|
124
|
-
<span class="item"><span class="kbd">⏎</span> send</span>
|
|
125
|
-
<span class="item"><span class="kbd">shift ⏎</span> newline</span>
|
|
126
|
-
<span class="item"><span class="kbd">⌘K</span> commands</span>
|
|
127
|
-
<span class="item"><span class="kbd">Esc</span> close modal</span>
|
|
128
|
-
</div>
|
|
129
|
-
</div>
|
|
130
|
-
|
|
131
|
-
<!-- v0.8 S3 · Reshape modal · ported from demo v12 lines 1142-1176 -->
|
|
132
|
-
<div class="reshape-modal" id="reshape-modal">
|
|
133
|
-
<div class="reshape-card">
|
|
134
|
-
<button class="close-x" id="reshape-close" aria-label="Close">×</button>
|
|
135
|
-
<div class="k">reshape this view</div>
|
|
136
|
-
<h2>Describe the view you want.</h2>
|
|
137
|
-
<p class="sub">Your agent composes the layout from codehere's shared primitives. Software ships building blocks · the final interface is yours to author.</p>
|
|
138
|
-
<div class="reshape-input">
|
|
139
|
-
<input id="reshape-input" placeholder="e.g. just show me what shipped + cost · no code"/>
|
|
140
|
-
<button id="reshape-submit">Compose</button>
|
|
141
|
-
</div>
|
|
142
|
-
<div class="reshape-suggestions prims">
|
|
143
|
-
<div class="lbl">or pick a quick start</div>
|
|
144
|
-
<button class="pill" data-shape="ship-only" data-prompt="just show me what shipped and the cost · hide everything else">just show me what shipped + cost <span class="what">— Final Report + file chips only</span></button>
|
|
145
|
-
<button class="pill" data-shape="velocity" data-prompt="velocity view · outcomes + duration + agent allocation · hide audit and code">velocity view <span class="what">— outcomes + time + cost · for daily check-in</span></button>
|
|
146
|
-
<button class="pill" data-shape="security" data-prompt="security view · highlight hook blocks, overrides, trust grades · hide narrative">security view <span class="what">— blocks / overrides / trust amplified</span></button>
|
|
147
|
-
</div>
|
|
148
|
-
<div class="agent-compose recomposing" id="agent-compose">
|
|
149
|
-
<div class="agent-line"><span style="font-family:var(--mono); color:var(--fg-90); font-weight:600">claude-code</span><span style="color:var(--fg-40)">· composing your view from shared primitives</span></div>
|
|
150
|
-
<div style="margin-top: 8px;">
|
|
151
|
-
<div class="line">read <span class="info">user prompt</span> · "<span id="compose-prompt-echo"></span>"</div>
|
|
152
|
-
<div class="line">analyze · <span class="kw">5 primitives in scope</span>: <code style="background:var(--bg-2);padding:0 4px;border-radius:2px">turn</code> · <code style="background:var(--bg-2);padding:0 4px;border-radius:2px">panel</code> · <code style="background:var(--bg-2);padding:0 4px;border-radius:2px">artifact</code> · <code style="background:var(--bg-2);padding:0 4px;border-radius:2px">audit-line</code> · <code style="background:var(--bg-2);padding:0 4px;border-radius:2px">tool-card</code></div>
|
|
153
|
-
<div class="line">compose <span class="kw">view-config</span> · <span id="compose-config" style="color:var(--fg-90)"></span></div>
|
|
154
|
-
<div class="line">apply · <span class="ok">view ready · 0.4s</span></div>
|
|
155
|
-
<div class="line"><span class="ok">✓</span> custom view active · <span style="color:var(--fg-50)">re-shape any time by clicking the button</span></div>
|
|
156
|
-
</div>
|
|
157
|
-
</div>
|
|
158
|
-
<div class="primitives-note">
|
|
159
|
-
<b>codehere ships primitives, not screens.</b> Your agent composes the layout from these building blocks · you author the final view in plain English.
|
|
160
|
-
<div class="prims">
|
|
161
|
-
<span class="p">turn</span>
|
|
162
|
-
<span class="p">panel</span>
|
|
163
|
-
<span class="p">artifact</span>
|
|
164
|
-
<span class="p">audit-line</span>
|
|
165
|
-
<span class="p">tool-card</span>
|
|
166
|
-
<span class="p">verified-block</span>
|
|
167
|
-
<span class="p">file-chip</span>
|
|
168
|
-
<span class="p">write-pass</span>
|
|
169
|
-
</div>
|
|
170
|
-
</div>
|
|
171
|
-
</div>
|
|
172
|
-
</div>
|
|
173
|
-
|
|
174
|
-
<!-- Connect a project from a GitHub URL · clone locally, open as a project -->
|
|
175
|
-
<div class="clone-modal" id="clone-modal" role="dialog" aria-modal="true" aria-labelledby="clone-title">
|
|
176
|
-
<div class="clone-card">
|
|
177
|
-
<button class="close-x" id="clone-close" aria-label="Close" onclick="closeClone()">×</button>
|
|
178
|
-
<div class="head" id="clone-title">Open a project from GitHub</div>
|
|
179
|
-
<p class="blurb">Paste a repo URL. codehere clones it to <code>~/codehere-projects/</code> on this machine and opens it — using your existing git access. Private repos work if your git is already set up.</p>
|
|
180
|
-
<div class="clone-input">
|
|
181
|
-
<input id="clone-url" placeholder="github.com/org/repo · or org/repo" autocomplete="off" spellcheck="false" onkeydown="if(event.key==='Enter')doClone()"/>
|
|
182
|
-
<button id="clone-submit" onclick="doClone()">Clone</button>
|
|
183
|
-
</div>
|
|
184
|
-
<div class="clone-status" id="clone-status" style="display:none"></div>
|
|
185
|
-
</div>
|
|
186
|
-
</div>
|
|
187
|
-
|
|
188
|
-
<!-- v0.8 S4 · share-thread modal · ported from demo v12 lines 1126-1139 -->
|
|
189
|
-
<div class="share-modal" id="share-modal" role="dialog" aria-modal="true" aria-labelledby="share-title">
|
|
190
|
-
<div class="share-card">
|
|
191
|
-
<div class="head" id="share-title">Share this thread <span class="tag">· still local-first</span></div>
|
|
192
|
-
<p class="blurb">Codehere generates a signed payload (steps · artifacts · Final Report · audit chain) you can paste into Slack, an email, a PR description. Your code never leaves your machine. Only the synthesized record does.</p>
|
|
193
|
-
<div class="share-link-box" id="share-link-box">codehere://thread/<span id="share-link-id">…</span>?signed=ed25519:<span id="share-link-fp">…</span></div>
|
|
194
|
-
<div class="share-actions">
|
|
195
|
-
<button class="share-btn-primary" id="share-copy-link">Copy link</button>
|
|
196
|
-
<button class="share-btn-secondary" id="share-download">Download bundle (.json)</button>
|
|
197
|
-
<button class="share-btn-secondary" id="share-close">Close</button>
|
|
198
|
-
</div>
|
|
199
|
-
<p class="share-foot">Link contains a signed payload · not source code · recipient verifies chain integrity locally before trusting.</p>
|
|
200
|
-
</div>
|
|
201
|
-
</div>
|
|
202
|
-
<div class="share-toast" id="share-toast">Link copied</div>
|
|
203
|
-
|
|
204
|
-
<!-- v0.9 S7 · overlay-renderer · inspect-and-act for ctx-source URLs -->
|
|
205
|
-
<div class="or-overlay overlay-render" id="or-overlay" role="dialog" aria-modal="true">
|
|
206
|
-
<div class="or-card or-content">
|
|
207
|
-
<div class="or-head">
|
|
208
|
-
<span class="src" id="or-src">linear</span>
|
|
209
|
-
<span class="meta" id="or-meta">…</span>
|
|
210
|
-
<span class="audit"><b>● audit</b> · captured locally</span>
|
|
211
|
-
<button class="or-close" id="or-close" aria-label="Close">×</button>
|
|
212
|
-
</div>
|
|
213
|
-
<div class="or-body" id="or-body">
|
|
214
|
-
<div class="preview-loading">fetching…</div>
|
|
215
|
-
</div>
|
|
216
|
-
<div class="or-composer or-agent-reply">
|
|
217
|
-
<span class="hint" id="or-hint">Ask the agent about this · all interaction captured in audit chain</span>
|
|
218
|
-
<div class="row">
|
|
219
|
-
<input id="or-input" placeholder="e.g. summarize the blocker · or what's the priority?"/>
|
|
220
|
-
<button id="or-ask" disabled title="Composer ships in S7 Part D">Ask agent</button>
|
|
221
|
-
</div>
|
|
222
|
-
</div>
|
|
223
|
-
</div>
|
|
224
|
-
</div>
|
|
225
|
-
|
|
226
|
-
<!-- v0.9 S6 · W-PASS approval modal · demo v12 lines 2030-2050 -->
|
|
227
|
-
<button class="wp-pending-badge" id="wp-pending-badge" title="An agent wants to make a write · click to review">write awaits ›</button>
|
|
228
|
-
<div class="wp-modal" id="wp-modal" role="dialog" aria-modal="true" aria-labelledby="wp-title">
|
|
229
|
-
<div class="wp-card">
|
|
230
|
-
<div class="wp-banner"><span class="dot"></span><span>write-pass · agent action · awaits your approval</span></div>
|
|
231
|
-
<h3 class="wp-title" id="wp-title" data-user-content>…</h3>
|
|
232
|
-
<p class="wp-reason" id="wp-reason" data-user-content>…</p>
|
|
233
|
-
<div class="wp-meta">
|
|
234
|
-
tool · <b id="wp-target" data-user-content>…</b> · third-party API · <span style="color:var(--accent)">gated by codehere</span>
|
|
235
|
-
</div>
|
|
236
|
-
<div class="wp-meta">
|
|
237
|
-
agent · <b id="wp-emitter">…</b> · session <span id="wp-session">…</span>
|
|
238
|
-
</div>
|
|
239
|
-
<div class="wp-meta" id="wp-trust-row" style="display:none">
|
|
240
|
-
domain · <b id="wp-trust-host">…</b> · trust grade
|
|
241
|
-
<span class="wp-trust-grade" id="wp-trust-grade">?</span>
|
|
242
|
-
<span id="wp-trust-reason" style="color:var(--fg-50)"></span>
|
|
243
|
-
</div>
|
|
244
|
-
<div class="wp-payload-wrap" id="wp-payload-wrap">
|
|
245
|
-
<div class="wp-payload-head">
|
|
246
|
-
<span class="method" id="wp-method">PATCH</span>
|
|
247
|
-
<span id="wp-targetline" data-user-content>…</span>
|
|
248
|
-
</div>
|
|
249
|
-
<div class="wp-payload" id="wp-payload" data-user-content>…</div>
|
|
250
|
-
</div>
|
|
251
|
-
<textarea class="wp-payload-edit" id="wp-payload-edit" style="display:none" spellcheck="false"></textarea>
|
|
252
|
-
<div class="wp-actions" id="wp-actions">
|
|
253
|
-
<button class="wp-btn-approve" id="wp-approve">Approve + send</button>
|
|
254
|
-
<button class="wp-btn-edit" id="wp-edit">Edit payload</button>
|
|
255
|
-
<button class="wp-btn-cancel" id="wp-cancel">Cancel</button>
|
|
256
|
-
</div>
|
|
257
|
-
<div class="wp-actions" id="wp-actions-editing" style="display:none">
|
|
258
|
-
<button class="wp-btn-save" id="wp-save">Save + send</button>
|
|
259
|
-
<button class="wp-btn-cancel" id="wp-edit-cancel">Discard edit</button>
|
|
260
|
-
</div>
|
|
261
|
-
<p class="wp-foot">codehere gates this write to a third-party tool · audit chain captures URL · payload · approval · response · signed timestamp · one verifiable thread instead of scattered tool logs</p>
|
|
262
|
-
<div class="wp-result" id="wp-result" style="display:none"></div>
|
|
263
|
-
</div>
|
|
264
|
-
</div>
|
|
265
|
-
|
|
266
|
-
<!-- S13 · the ⌘K command palette — THE control surface. Every control that
|
|
267
|
-
left the header is a command here; each label names its visible
|
|
268
|
-
consequence and Enter actually runs the existing function. -->
|
|
269
|
-
<div class="palette-scrim" id="palette-scrim" data-verify-unit="palette">
|
|
270
|
-
<div class="palette" role="dialog" aria-modal="true" aria-label="Command palette">
|
|
271
|
-
<div class="pin"><input id="palette-input" placeholder="Type a command · every control lives here…" autocomplete="off" spellcheck="false" aria-label="Filter commands"/></div>
|
|
272
|
-
<div class="plist" id="palette-list"></div>
|
|
273
|
-
<div class="pfoot"><span>arrow keys navigate</span><span>⏎ run</span><span>esc close</span></div>
|
|
274
|
-
</div>
|
|
275
|
-
</div>
|
|
276
|
-
|
|
277
|
-
<!-- Settings drawer (A-09) · holds Context Sources + future toggles -->
|
|
278
|
-
<div class="drawer-overlay" id="drawer-overlay"></div>
|
|
279
|
-
<aside class="drawer" id="settings-drawer" aria-hidden="true">
|
|
280
|
-
<button class="drawer-close" id="settings-close" aria-label="Close settings">×</button>
|
|
281
|
-
<div class="drawer-title">Settings</div>
|
|
282
|
-
|
|
283
|
-
<h3>Integrations</h3>
|
|
284
|
-
<p class="sub">Working context sources appear here. Use their URL chips in prompts.</p>
|
|
285
|
-
<div id="cs-list">
|
|
286
|
-
<div style="color:var(--fg-40); font-size:12px">loading...</div>
|
|
287
|
-
</div>
|
|
288
|
-
</aside>
|
|
289
|
-
|
|
290
|
-
<div id="offline-banner" class="offline-banner" style="display:none">You're offline. Actions will resume when connected.</div>
|
|
291
|
-
<div id="toast" style="display:none;position:fixed;bottom:80px;left:50%;transform:translateX(-50%);background:var(--bg-2);border:1px solid var(--border);border-radius:8px;padding:8px 16px;font-size:12px;color:var(--fg-70);z-index:100"></div>
|
|
292
|
-
|
|
293
|
-
<!-- RADICAL bottom-chrome collapse (2026-05-24) · audit-chain panel
|
|
294
|
-
inlined into the OSS-footer status bar · ~115px -> ~28px ·
|
|
295
|
-
all load-bearing info preserved (dots · stats · Verify button) ·
|
|
296
|
-
only the redundant subtitle + panel-card chrome removed. -->
|
|
297
|
-
<div class="oss-footer">
|
|
298
|
-
<span class="brand">codehere</span>
|
|
299
|
-
<span class="sep">·</span>
|
|
300
|
-
<span id="oss-version">v0.6.x</span>
|
|
301
|
-
<span class="sep">·</span>
|
|
302
|
-
<a href="https://github.com/muhammadegaa/codehere" target="_blank" rel="noopener">github</a>
|
|
303
|
-
<span class="sep">·</span>
|
|
304
|
-
<span>MIT</span>
|
|
305
|
-
<span class="sep">·</span>
|
|
306
|
-
<span class="audit-chain-panel">
|
|
307
|
-
<button id="audit-verify-btn" class="audit-chain-btn" onclick="verifyAuditChain()" title="Check your local activity log hasn't been edited">verify log</button>
|
|
308
|
-
<span id="audit-result" class="audit-chain-result" style="color:var(--fg-50)"></span>
|
|
309
|
-
</span>
|
|
310
|
-
<span class="right">built locally</span>
|
|
311
|
-
</div>
|
|
312
|
-
</div>
|
|
313
|
-
<!-- First-run: welcome splash + first-time setup (JS-rendered), then the tour. -->
|
|
314
|
-
<div id="ob-welcome" class="ob-welcome" hidden></div>
|
|
315
|
-
<!-- Interactive onboarding walkthrough — spotlight coachmarks over the real UI. -->
|
|
316
|
-
<div id="ob-tour" class="ob-tour" hidden><div class="ob-spot" id="ob-spot"></div><div class="ob-pop" id="ob-pop"></div></div>
|
|
317
|
-
<script>${APP_SCRIPT}</script>
|
|
318
|
-
</body>
|
|
319
|
-
</html>`;
|
|
320
|
-
//# sourceMappingURL=ui-page-v2.js.map
|