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.
28 lines • 1.62 kB
TypeScript
import type { Activity } from './activity.js';
import type { Intervention } from './interventions.js';
/**
* The stable identity of a watched item, and the "only what is new" diff both notifier paths run.
*
* A leaf module on purpose: `activity.ts` and `interventions.ts` build their items by reading the
* store, so they import `node:*` and cannot be reached from the browser bundle. These four
* functions are pure and depend on nothing but the item, so they live here and are re-exported
* from `client.ts` — which is what lets the dashboard share them instead of keeping the copy it
* used to keep. A copy is not free here: the key IS the identity the daemon dedupes on, so a
* drifted one silently double-notifies or silently never notifies, with nothing to type-check.
*
* The type imports are erased at compile time, so they add no edge to the graph `client.test.ts`
* walks.
*/
/**
* The stable identity of an intervention. A PR is its url (survives title edits and re-sorts);
* the other two are keyed on the project plus the thing waiting — the gate id, or the agent whose
* branch is unpushed — since their url is the shared dashboard URL and would otherwise collide.
*/
export declare function interventionKey(item: Intervention): string;
/**
* The stable identity of an activity item: its kind + project + run. The kind is part of the key
* so an agent's `started` and `finished` are two separate announcements (one when it kicks off, one
* when it lands), each firing exactly once.
*/
export declare function activityKey(item: Activity): string;
//# sourceMappingURL=keys.d.ts.map