framework
Version:
The (AI) Framework: turnkey, zero-config AI orchestration that wraps a coding-agent CLI (Claude Code) as a black box and takes you from an idea to a running app. Vite for AI.
48 lines • 4.24 kB
JavaScript
// Browser-safe entry for the dashboard client (#431). Only pure event projections live
// here — `formatFrameworkEvent` and the run-view derivations — with no Node imports, so
// the client can import these at runtime without dragging the server barrel (relay,
// sandbox, node:fs/http, …) into the browser bundle. Types come from the root entry.
export { DRIVERS, DRIVER_LABELS, isDriverName, driverFromImpl } from './driver-names.js';
export { formatFrameworkEvent } from './terminal.js';
export { formatBytes } from './format-bytes.js';
export { errorMessage } from './error-message.js';
export { pickedIds } from './events.js';
export { sessionInfo, agentProgress, agentErrors, handoffState, } from './agent-view.js';
// The Start-an-agent presets (#433): pure prompt builders (no Node imports) the dashboard
// prefills into the textarea, then runs verbatim as a `prompt` kind.
// The prompt-wrapping logic itself (#520), so the dashboard can show the user the
// built-in prompt *before* an agent rather than describing it. These are pure string
// work — `loadUserSystemPrompt` is the module's only Node-bound export and stays
// out of here, which is what keeps this importable in a browser.
export { systemPromptBlock, composeAgentSystem, renderSystemPrompt, SYSTEM_PROMPT_TEMPLATE, } from './system-prompt.js';
// What a preset can read beyond its params (#874), so the dashboard can render a preset against
// the session it was launched from. Pure string work, like the renderers below.
export { defaultWhat, DEFAULT_WHAT } from './preset-prompt.js';
export { presets, LAUNCHER_PRESETS } from './preset-catalog.js';
// The routines the idle sweep fires (#1159), so the dashboard can list them and run one on demand.
// The jobs are built from the presets above and carry their prompt verbatim, so this needs no
// backend of its own, and the list on screen is the list the daemon runs rather than a copy of it.
export { AUTO_PM_ROUTINES, AUTO_PM_JOBS, AUTO_PM_DRAIN_JOB, AUTO_PM_MAINTENANCE_JOB } from './auto-pm.js';
// The identity + diff both notifier paths run, and the preference defaults both sides read (#627).
// Pure, so the dashboard shares them rather than keeping copies that drift silently.
export { interventionKey, activityKey } from './dashboard/keys.js';
// The baseline half of the same engine (#1625): what counts as "already there" when a feed is first
// seen. The dashboard used to decide that by counting observations, which made a page loaded with no
// GitHub reach take an empty backlog for a real one. Pure, and its only import is a type.
export { SeenTracker } from './dashboard/keyed-watcher.js';
export { NOTIFICATION_DEFAULTS, MAX_SPEND_OFFSET, DEFAULT_SPEND_OFFSET, DEFAULT_AUTO_PM_CONCURRENCY, MAX_AUTO_PM_CONCURRENCY, notifies, notifyMethodEnabled, notifyCategoryEnabled } from './preference-defaults.js';
// The preferences -> run options mapping (#858), shared with the daemon so an unattended agent
// starts with the same settings a launcher-started one would. Pure field logic, no Node imports.
export { agentOptionsFromPreferences, handoffFromPreferences, preferencesFromFileConfig } from './agent-options.js';
// The publish ladder (B5). The dashboard offers the rungs as checkboxes and the session header as
// one box, so both need the ordinal and the two conversions — an impossible answer has to resolve
// on the surface that collected it, not on the agent that receives it.
export { DEFAULT_HANDOFF, HANDOFF_LEVELS, handoffFromStages, handoffReaches, handoffStages, isHandoffLevel, } from './handoff-level.js';
// The Discord credential rules (#1095): the same precedence and validation the daemon enforces,
// so the setup dialog rejects a malformed token before the round trip instead of guessing at it.
export { credentialEnvVar, validateCredential, } from './discord-credentials.js';
// Whether an address is truly local (#1051). The daemon decides the token gate with it and the
// dashboard labels the connection with it, so they must agree on what "local" means — the browser
// kept its own looser copy, which answered `false` for every 127.0.0.0/8 address but the first.
export { isLoopbackHost } from './loopback-host.js';
//# sourceMappingURL=client.js.map