hcifootprint 0.2.0
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/LICENSE +20 -0
- package/README.md +524 -0
- package/dist/atom/types.d.ts +618 -0
- package/dist/atom/types.d.ts.map +1 -0
- package/dist/atom/types.js +2 -0
- package/dist/atom/types.js.map +1 -0
- package/dist/graph/builder.d.ts +31 -0
- package/dist/graph/builder.d.ts.map +1 -0
- package/dist/graph/builder.js +165 -0
- package/dist/graph/builder.js.map +1 -0
- package/dist/graph/guards.d.ts +31 -0
- package/dist/graph/guards.d.ts.map +1 -0
- package/dist/graph/guards.js +94 -0
- package/dist/graph/guards.js.map +1 -0
- package/dist/graph/skill-deps.d.ts +20 -0
- package/dist/graph/skill-deps.d.ts.map +1 -0
- package/dist/graph/skill-deps.js +15 -0
- package/dist/graph/skill-deps.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +16 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +15 -0
- package/dist/mcp.js.map +1 -0
- package/dist/presence/presence.d.ts +50 -0
- package/dist/presence/presence.d.ts.map +1 -0
- package/dist/presence/presence.js +126 -0
- package/dist/presence/presence.js.map +1 -0
- package/dist/registry/registry.d.ts +53 -0
- package/dist/registry/registry.d.ts.map +1 -0
- package/dist/registry/registry.js +76 -0
- package/dist/registry/registry.js.map +1 -0
- package/dist/serve/mcp-server.d.ts +40 -0
- package/dist/serve/mcp-server.d.ts.map +1 -0
- package/dist/serve/mcp-server.js +72 -0
- package/dist/serve/mcp-server.js.map +1 -0
- package/dist/serve/mcp.d.ts +12 -0
- package/dist/serve/mcp.d.ts.map +1 -0
- package/dist/serve/mcp.js +62 -0
- package/dist/serve/mcp.js.map +1 -0
- package/dist/serve/modes.d.ts +66 -0
- package/dist/serve/modes.d.ts.map +1 -0
- package/dist/serve/modes.js +347 -0
- package/dist/serve/modes.js.map +1 -0
- package/dist/testing/harness.d.ts +156 -0
- package/dist/testing/harness.d.ts.map +1 -0
- package/dist/testing/harness.js +416 -0
- package/dist/testing/harness.js.map +1 -0
- package/dist/testing/index.d.ts +35 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +32 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/lint.d.ts +20 -0
- package/dist/testing/lint.d.ts.map +1 -0
- package/dist/testing/lint.js +18 -0
- package/dist/testing/lint.js.map +1 -0
- package/dist/testing/model/check.d.ts +30 -0
- package/dist/testing/model/check.d.ts.map +1 -0
- package/dist/testing/model/check.js +89 -0
- package/dist/testing/model/check.js.map +1 -0
- package/dist/testing/model/lint.d.ts +54 -0
- package/dist/testing/model/lint.d.ts.map +1 -0
- package/dist/testing/model/lint.js +235 -0
- package/dist/testing/model/lint.js.map +1 -0
- package/dist/testing/model/satisfiable.d.ts +25 -0
- package/dist/testing/model/satisfiable.d.ts.map +1 -0
- package/dist/testing/model/satisfiable.js +101 -0
- package/dist/testing/model/satisfiable.js.map +1 -0
- package/dist/traverse/nav-session.d.ts +108 -0
- package/dist/traverse/nav-session.d.ts.map +1 -0
- package/dist/traverse/nav-session.js +637 -0
- package/dist/traverse/nav-session.js.map +1 -0
- package/dist/traverse/session.d.ts +239 -0
- package/dist/traverse/session.d.ts.map +1 -0
- package/dist/traverse/session.js +1305 -0
- package/dist/traverse/session.js.map +1 -0
- package/dist/tree/appmap.d.ts +8 -0
- package/dist/tree/appmap.d.ts.map +1 -0
- package/dist/tree/appmap.js +259 -0
- package/dist/tree/appmap.js.map +1 -0
- package/dist/tree/types.d.ts +151 -0
- package/dist/tree/types.d.ts.map +1 -0
- package/dist/tree/types.js +2 -0
- package/dist/tree/types.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InteractionSession — the composition layer: core Session (driver, frames,
|
|
3
|
+
* gap ledger, trace) × the authored tree (buildNavigationGraph) × the presence
|
|
4
|
+
* sensor (PresenceIndex). Each ingredient stays independently testable; THIS
|
|
5
|
+
* file is where their meanings meet:
|
|
6
|
+
*
|
|
7
|
+
* router sync owns the page level, always
|
|
8
|
+
* → authored semantics own meaning (modal overlay, tab exclusivity, repeats)
|
|
9
|
+
* → mount handles own presence strictly below the router-confirmed page
|
|
10
|
+
* → explicit visibility signals (show/setVisible/`visible:`) own shown/hidden
|
|
11
|
+
*
|
|
12
|
+
* Focus ("You are on", below page level) is set ONLY by sync() and fire()
|
|
13
|
+
* evidence — never by registration, never by recency (React commits effects
|
|
14
|
+
* bottom-up; a lazy sidebar must not steal focus from a modal). When the
|
|
15
|
+
* focus node deactivates, focus falls back to the nearest active ancestor —
|
|
16
|
+
* modal-close auto-resume for free.
|
|
17
|
+
*
|
|
18
|
+
* Everything the runtime DERIVES rather than observes is stamped with an
|
|
19
|
+
* honesty marker; every refused fire is a typed, gap-ledger-recorded
|
|
20
|
+
* rejection. Never a silent exclusion, never a guessed winner.
|
|
21
|
+
*/
|
|
22
|
+
import type { AvailableSlice, ContextBrief, ContextBriefOptions, FireOptions, FireResult, Principal, SessionOptions, SkillGraphSpec, StimulusKind, SyncResult, ToolGroup, ToolHandle } from '../atom/types.js';
|
|
23
|
+
import type { NavigationGraph, ToolDef } from '../tree/types.js';
|
|
24
|
+
import { Session } from './session.js';
|
|
25
|
+
import type { ToolHandler } from '../registry/registry.js';
|
|
26
|
+
export interface InteractionSessionOptions extends Omit<SessionOptions, 'node'> {
|
|
27
|
+
/** Starting page id. Default: the first declared page. */
|
|
28
|
+
node?: string;
|
|
29
|
+
/**
|
|
30
|
+
* How long a registration outside the router-confirmed page may persist
|
|
31
|
+
* before drift telemetry fires (a dev warning + one sensor-drift gap row).
|
|
32
|
+
* Registrations in that window are DORMANT: held, not offered, activated
|
|
33
|
+
* instantly if the router then confirms their page. Default 3000ms.
|
|
34
|
+
*/
|
|
35
|
+
dormantGraceMs?: number;
|
|
36
|
+
/**
|
|
37
|
+
* The clock the dormancy / overlay-grace timers read (epoch ms). Defaults to
|
|
38
|
+
* `Date.now`. Inject a controllable clock to test time-dependent staleness
|
|
39
|
+
* deterministically — a dormant registration, a mount-grace warning — without
|
|
40
|
+
* real waits (hcifootprint/testing's harness wires one for you).
|
|
41
|
+
*/
|
|
42
|
+
now?: () => number;
|
|
43
|
+
}
|
|
44
|
+
/** A tool declared at mount time. `does` is a registration-site source-code literal — still authored. */
|
|
45
|
+
export interface RegisteredToolDef extends ToolDef {
|
|
46
|
+
handler?: ToolHandler;
|
|
47
|
+
}
|
|
48
|
+
export interface RegisterToolGroupOptions {
|
|
49
|
+
/** Bind the app's EXISTING handlers (by reference) to tools declared on this node. */
|
|
50
|
+
handlers?: Record<string, ToolHandler>;
|
|
51
|
+
/** Declare new leaf tools here-and-now (the register-with-just-a-description path). */
|
|
52
|
+
tools?: Record<string, RegisteredToolDef>;
|
|
53
|
+
/** Instance key when registering one card of a repeats container ('o-123'). */
|
|
54
|
+
instance?: string;
|
|
55
|
+
/** Initial visibility signal (same wire as setVisible). */
|
|
56
|
+
visible?: boolean;
|
|
57
|
+
/** Initial disabled state per tool (leaf name → enabled). Flip later via handle.setEnabled. */
|
|
58
|
+
enabled?: Record<string, boolean>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The handle returned by registerToolGroup — the group's IDENTITY (see
|
|
62
|
+
* ToolGroup). Hold it and call `unregister()` on unmount; `setEnabled(id, …)`
|
|
63
|
+
* greys a tool out.
|
|
64
|
+
*/
|
|
65
|
+
export interface ToolGroupHandle extends ToolGroup {
|
|
66
|
+
/** Instance key, when this group registered one card of a repeats container. */
|
|
67
|
+
readonly instance?: string;
|
|
68
|
+
}
|
|
69
|
+
export declare class InteractionSession<Paths extends string = string> extends Session {
|
|
70
|
+
#private;
|
|
71
|
+
constructor(map: NavigationGraph, opts?: InteractionSessionOptions);
|
|
72
|
+
protected get spec(): SkillGraphSpec;
|
|
73
|
+
/**
|
|
74
|
+
* Register a component's handlers/tools ON a node when it renders. You never
|
|
75
|
+
* name a group — this RETURNS a ToolGroupHandle that is the identity (with a
|
|
76
|
+
* generated `id`). Hold it in a ref; call `handle.unregister()` on unmount.
|
|
77
|
+
* `handle.setEnabled(toolId, false)` greys one tool out (a disabled button).
|
|
78
|
+
*/
|
|
79
|
+
registerToolGroup(path: Paths, opts?: RegisterToolGroupOptions): ToolGroupHandle;
|
|
80
|
+
/**
|
|
81
|
+
* Register ONE tool on a node (convenience over registerToolGroup). `def`
|
|
82
|
+
* either binds an existing declared tool (`{ handler }`) or declares a new
|
|
83
|
+
* leaf here (`{ does, handler }`). Returns a single-tool handle.
|
|
84
|
+
*/
|
|
85
|
+
registerTool(path: Paths, toolId: string, def: RegisteredToolDef & {
|
|
86
|
+
handler: ToolHandler;
|
|
87
|
+
}): ToolHandle;
|
|
88
|
+
setVisible(path: Paths, visible: boolean): void;
|
|
89
|
+
/** Show a node; for a tab this also hides its tab siblings (at most one shown). */
|
|
90
|
+
show(path: Paths): void;
|
|
91
|
+
get focus(): string;
|
|
92
|
+
available(): AvailableSlice;
|
|
93
|
+
fire(affordanceId: string, opts: FireOptions): FireResult;
|
|
94
|
+
protected handlerFor(affordanceId: string, opts: FireOptions): ToolHandler | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* Instance-aware disabled gate: a per-row button registered disabled under
|
|
97
|
+
* 'id[instance]' must block, matching how handlerFor resolves it. Falls back
|
|
98
|
+
* to the base (non-instance) registration.
|
|
99
|
+
*/
|
|
100
|
+
protected isToolDisabled(affordanceId: string, opts: FireOptions): boolean;
|
|
101
|
+
sync(observedNode: string, opts?: {
|
|
102
|
+
stimulus?: StimulusKind;
|
|
103
|
+
principal?: Principal;
|
|
104
|
+
}): SyncResult;
|
|
105
|
+
contextBrief(opts?: ContextBriefOptions): ContextBrief;
|
|
106
|
+
protected structureFingerprint(): string;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=nav-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-session.d.ts","sourceRoot":"","sources":["../../src/traverse/nav-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAIV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACX,MAAM,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,eAAe,EAAW,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,WAAW,yBAA0B,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IAC7E,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,yGAAyG;AACzG,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1C,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAOD,qBAAa,kBAAkB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,OAAO;;gBAsBhE,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,yBAAyB;IAYlE,cAAuB,IAAI,IAAI,cAAc,CAQ5C;IAgBD;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,wBAAwB,GAAG,eAAe;IA2EhF;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,GAAG,UAAU;IAiIxG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAM/C,mFAAmF;IACnF,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IA2BvB,IAAI,KAAK,IAAI,MAAM,CAUlB;IAqJQ,SAAS,IAAI,cAAc;IA6B3B,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU;cA6C/C,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS;IAU/F;;;;OAIG;cACgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO;IAQ1E,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,YAAY,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,UAAU;IAmBjG,YAAY,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,YAAY;cA8E5C,oBAAoB,IAAI,MAAM;CAelD"}
|