proofscan 0.10.2 → 0.10.4

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.
Files changed (40) hide show
  1. package/README.ja.md +272 -95
  2. package/README.md +200 -311
  3. package/dist/cli.js +4 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/index.d.ts +1 -0
  6. package/dist/commands/index.d.ts.map +1 -1
  7. package/dist/commands/index.js +2 -0
  8. package/dist/commands/index.js.map +1 -1
  9. package/dist/commands/popl.d.ts +16 -0
  10. package/dist/commands/popl.d.ts.map +1 -0
  11. package/dist/commands/popl.js +495 -0
  12. package/dist/commands/popl.js.map +1 -0
  13. package/dist/popl/artifacts.d.ts +78 -0
  14. package/dist/popl/artifacts.d.ts.map +1 -0
  15. package/dist/popl/artifacts.js +205 -0
  16. package/dist/popl/artifacts.js.map +1 -0
  17. package/dist/popl/index.d.ts +10 -0
  18. package/dist/popl/index.d.ts.map +1 -0
  19. package/dist/popl/index.js +14 -0
  20. package/dist/popl/index.js.map +1 -0
  21. package/dist/popl/sanitizer.d.ts +86 -0
  22. package/dist/popl/sanitizer.d.ts.map +1 -0
  23. package/dist/popl/sanitizer.js +271 -0
  24. package/dist/popl/sanitizer.js.map +1 -0
  25. package/dist/popl/service.d.ts +46 -0
  26. package/dist/popl/service.d.ts.map +1 -0
  27. package/dist/popl/service.js +231 -0
  28. package/dist/popl/service.js.map +1 -0
  29. package/dist/popl/types.d.ts +195 -0
  30. package/dist/popl/types.d.ts.map +1 -0
  31. package/dist/popl/types.js +20 -0
  32. package/dist/popl/types.js.map +1 -0
  33. package/dist/shell/popl-commands.d.ts +26 -0
  34. package/dist/shell/popl-commands.d.ts.map +1 -0
  35. package/dist/shell/popl-commands.js +281 -0
  36. package/dist/shell/popl-commands.js.map +1 -0
  37. package/dist/shell/repl.d.ts.map +1 -1
  38. package/dist/shell/repl.js +6 -0
  39. package/dist/shell/repl.js.map +1 -1
  40. package/package.json +6 -4
@@ -0,0 +1,195 @@
1
+ /**
2
+ * POPL Types (Phase 6.0)
3
+ *
4
+ * Public Observable Proof Ledger - Type definitions for POPL.yml schema.
5
+ *
6
+ * IMPORTANT: POPL is designed for PUBLIC disclosure.
7
+ * - No local absolute paths
8
+ * - No secrets/tokens/PII
9
+ * - Only sanitized evidence with hashes
10
+ */
11
+ /** POPL schema version */
12
+ export declare const POPL_VERSION = 1;
13
+ /** Trust levels */
14
+ export type TrustLevel = 0 | 1 | 2 | 3;
15
+ /** Trust level labels */
16
+ export declare const TRUST_LABELS: Record<TrustLevel, string>;
17
+ /** Target kinds for POPL entries */
18
+ export type TargetKind = 'session' | 'connector' | 'proxy';
19
+ /** Redaction policy */
20
+ export type RedactionPolicy = 'default' | 'strict' | 'none';
21
+ /** Author information */
22
+ export interface PoplAuthor {
23
+ /** Display name */
24
+ name: string;
25
+ /** Handle (e.g., GitHub username) */
26
+ handle?: string;
27
+ }
28
+ /** Trust information */
29
+ export interface PoplTrust {
30
+ /** Trust level (0-3) */
31
+ level: TrustLevel;
32
+ /** Human-readable label */
33
+ label: string;
34
+ }
35
+ /** Target identifiers */
36
+ export interface PoplTargetIds {
37
+ /** Proxy instance ID (optional) */
38
+ proxy_id?: string;
39
+ /** Connector ID (optional for proxy-level entries) */
40
+ connector_id?: string;
41
+ /** Session ID (required for session-level entries) */
42
+ session_id?: string;
43
+ }
44
+ /** Target specification */
45
+ export interface PoplTarget {
46
+ /** Target kind */
47
+ kind: TargetKind;
48
+ /** Display name */
49
+ name: string;
50
+ /** Target identifiers */
51
+ ids: PoplTargetIds;
52
+ }
53
+ /** Capture summary statistics */
54
+ export interface PoplCaptureSummary {
55
+ /** Total RPC calls */
56
+ rpc_total: number;
57
+ /** Error count */
58
+ errors: number;
59
+ /** P50 latency in milliseconds */
60
+ latency_ms_p50?: number;
61
+ /** P95 latency in milliseconds */
62
+ latency_ms_p95?: number;
63
+ }
64
+ /** MCP client information */
65
+ export interface PoplMcpClient {
66
+ /** Communication mode */
67
+ mode: 'stdio' | 'http';
68
+ /** Client name (if known) */
69
+ name?: string;
70
+ }
71
+ /** MCP server information */
72
+ export interface PoplMcpServer {
73
+ /** Server/connector name */
74
+ name: string;
75
+ /** Number of tools */
76
+ tools?: number;
77
+ }
78
+ /** MCP metadata */
79
+ export interface PoplMcp {
80
+ /** Client info */
81
+ client?: PoplMcpClient;
82
+ /** Server(s) info */
83
+ servers?: PoplMcpServer[];
84
+ }
85
+ /** Capture window */
86
+ export interface PoplCaptureWindow {
87
+ /** Start timestamp (ISO 8601) */
88
+ started_at: string;
89
+ /** End timestamp (ISO 8601) */
90
+ ended_at: string;
91
+ }
92
+ /** Capture metadata */
93
+ export interface PoplCapture {
94
+ /** Time window */
95
+ window: PoplCaptureWindow;
96
+ /** Summary statistics */
97
+ summary: PoplCaptureSummary;
98
+ /** MCP metadata */
99
+ mcp?: PoplMcp;
100
+ }
101
+ /** Evidence artifact */
102
+ export interface PoplArtifact {
103
+ /** Artifact name (for display) */
104
+ name: string;
105
+ /** Relative path within entry directory */
106
+ path: string;
107
+ /** SHA-256 hash of file contents */
108
+ sha256: string;
109
+ }
110
+ /** Evidence policy */
111
+ export interface PoplEvidencePolicy {
112
+ /** Redaction policy applied */
113
+ redaction: RedactionPolicy;
114
+ /** Ruleset version used for sanitization */
115
+ ruleset_version: number;
116
+ }
117
+ /** Evidence section */
118
+ export interface PoplEvidence {
119
+ /** Policy applied to evidence */
120
+ policy: PoplEvidencePolicy;
121
+ /** Artifacts included */
122
+ artifacts: PoplArtifact[];
123
+ }
124
+ /** Entry metadata */
125
+ export interface PoplEntry {
126
+ /** Unique entry ID (ULID) */
127
+ id: string;
128
+ /** Creation timestamp (ISO 8601) */
129
+ created_at: string;
130
+ /** Entry title */
131
+ title: string;
132
+ /** Author information */
133
+ author: PoplAuthor;
134
+ /** Trust level */
135
+ trust: PoplTrust;
136
+ }
137
+ /**
138
+ * Complete POPL.yml document structure
139
+ *
140
+ * This is the root type for POPL entry files.
141
+ */
142
+ export interface PoplDocument {
143
+ /** Schema version */
144
+ popl: typeof POPL_VERSION;
145
+ /** Entry metadata */
146
+ entry: PoplEntry;
147
+ /** Target specification */
148
+ target: PoplTarget;
149
+ /** Capture metadata */
150
+ capture: PoplCapture;
151
+ /** Evidence section */
152
+ evidence: PoplEvidence;
153
+ }
154
+ /**
155
+ * Options for creating a POPL entry
156
+ */
157
+ export interface CreatePoplOptions {
158
+ /** Target kind */
159
+ kind: TargetKind;
160
+ /** Target IDs */
161
+ ids: PoplTargetIds;
162
+ /** Output root directory (where .popl/ exists) */
163
+ outputRoot: string;
164
+ /** Entry title (optional, auto-generated if not provided) */
165
+ title?: string;
166
+ /** Author info (optional, uses config if not provided) */
167
+ author?: PoplAuthor;
168
+ /** Include raw (unsanitized) artifacts - DANGEROUS */
169
+ unsafeIncludeRaw?: boolean;
170
+ }
171
+ /**
172
+ * Result of POPL entry creation
173
+ */
174
+ export interface CreatePoplResult {
175
+ /** Whether creation succeeded */
176
+ success: boolean;
177
+ /** Entry ID */
178
+ entryId?: string;
179
+ /** Path to entry directory */
180
+ entryPath?: string;
181
+ /** Path to POPL.yml */
182
+ poplYmlPath?: string;
183
+ /** Error message if failed */
184
+ error?: string;
185
+ }
186
+ /**
187
+ * POPL configuration (from .popl/config.json or global)
188
+ */
189
+ export interface PoplConfig {
190
+ /** Default author */
191
+ author?: PoplAuthor;
192
+ /** Default redaction policy */
193
+ redaction?: RedactionPolicy;
194
+ }
195
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/popl/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * POPL Types (Phase 6.0)
3
+ *
4
+ * Public Observable Proof Ledger - Type definitions for POPL.yml schema.
5
+ *
6
+ * IMPORTANT: POPL is designed for PUBLIC disclosure.
7
+ * - No local absolute paths
8
+ * - No secrets/tokens/PII
9
+ * - Only sanitized evidence with hashes
10
+ */
11
+ /** POPL schema version */
12
+ export const POPL_VERSION = 1;
13
+ /** Trust level labels */
14
+ export const TRUST_LABELS = {
15
+ 0: 'Recorded',
16
+ 1: 'Verified',
17
+ 2: 'Attested',
18
+ 3: 'Certified',
19
+ };
20
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/popl/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAK9B,yBAAyB;AACzB,MAAM,CAAC,MAAM,YAAY,GAA+B;IACtD,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,WAAW;CACf,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Shell POPL commands (Phase 6.0)
3
+ *
4
+ * Shell commands for POPL with @reference support.
5
+ *
6
+ * Commands:
7
+ * - popl init : Initialize .popl in current directory
8
+ * - popl session [@ref] : Create POPL entry for session
9
+ * - popl ls : List POPL entries
10
+ * - popl show <entry-id> : Show POPL entry details
11
+ *
12
+ * Reference resolution:
13
+ * - @this : Current session from context
14
+ * - @last : Most recent session
15
+ * - @ref:name : User-defined reference
16
+ * - @session:id : Explicit session ID
17
+ *
18
+ * IMPORTANT: Shell resolves @references to session IDs,
19
+ * then calls the shared service layer (same as CLI).
20
+ */
21
+ import type { ShellContext } from './types.js';
22
+ /**
23
+ * Handle 'popl' shell command
24
+ */
25
+ export declare function handlePopl(args: string[], context: ShellContext, configPath: string): Promise<void>;
26
+ //# sourceMappingURL=popl-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popl-commands.d.ts","sourceRoot":"","sources":["../../src/shell/popl-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmB/C;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAgCf"}
@@ -0,0 +1,281 @@
1
+ /**
2
+ * Shell POPL commands (Phase 6.0)
3
+ *
4
+ * Shell commands for POPL with @reference support.
5
+ *
6
+ * Commands:
7
+ * - popl init : Initialize .popl in current directory
8
+ * - popl session [@ref] : Create POPL entry for session
9
+ * - popl ls : List POPL entries
10
+ * - popl show <entry-id> : Show POPL entry details
11
+ *
12
+ * Reference resolution:
13
+ * - @this : Current session from context
14
+ * - @last : Most recent session
15
+ * - @ref:name : User-defined reference
16
+ * - @session:id : Explicit session ID
17
+ *
18
+ * IMPORTANT: Shell resolves @references to session IDs,
19
+ * then calls the shared service layer (same as CLI).
20
+ */
21
+ import { printSuccess, printError, printInfo, dimText } from './prompt.js';
22
+ import { ConfigManager } from '../config/index.js';
23
+ import { EventsStore } from '../db/events-store.js';
24
+ import { RefResolver, createRefDataProvider, isRef, } from './ref-resolver.js';
25
+ import { hasPoplDir, initPoplDir, createSessionPoplEntry, listPoplEntries, readPoplEntry, getPoplEntriesDir, } from '../popl/index.js';
26
+ import { join } from 'path';
27
+ /**
28
+ * Handle 'popl' shell command
29
+ */
30
+ export async function handlePopl(args, context, configPath) {
31
+ if (args.length === 0) {
32
+ printPoplHelp();
33
+ return;
34
+ }
35
+ const subcommand = args[0];
36
+ const subArgs = args.slice(1);
37
+ switch (subcommand) {
38
+ case 'init':
39
+ await handlePoplInit();
40
+ break;
41
+ case 'session':
42
+ await handlePoplSession(subArgs, context, configPath);
43
+ break;
44
+ case 'ls':
45
+ case 'list':
46
+ await handlePoplList();
47
+ break;
48
+ case 'show':
49
+ await handlePoplShow(subArgs);
50
+ break;
51
+ default:
52
+ // Check if it's a direct @reference (popl @last)
53
+ if (subcommand.startsWith('@')) {
54
+ await handlePoplSession([subcommand, ...subArgs], context, configPath);
55
+ }
56
+ else {
57
+ printError(`Unknown popl subcommand: ${subcommand}`);
58
+ printPoplHelp();
59
+ }
60
+ }
61
+ }
62
+ /**
63
+ * Print help for popl command
64
+ */
65
+ function printPoplHelp() {
66
+ printInfo('Usage: popl <subcommand>');
67
+ printInfo('');
68
+ printInfo('Subcommands:');
69
+ printInfo(' popl init Initialize .popl in current directory');
70
+ printInfo(' popl session [@ref] Create POPL entry for session');
71
+ printInfo(' popl ls List POPL entries');
72
+ printInfo(' popl show <entry-id> Show POPL entry details');
73
+ printInfo('');
74
+ printInfo('Reference shortcuts:');
75
+ printInfo(' popl @this Create entry for current session');
76
+ printInfo(' popl @last Create entry for latest session');
77
+ printInfo(' popl @ref:name Create entry for named reference');
78
+ printInfo('');
79
+ printInfo('Examples:');
80
+ printInfo(' popl init');
81
+ printInfo(' popl session @last');
82
+ printInfo(' popl session @this --title "My audit"');
83
+ printInfo(' popl @last');
84
+ }
85
+ /**
86
+ * Handle 'popl init' command
87
+ */
88
+ async function handlePoplInit() {
89
+ const cwd = process.cwd();
90
+ if (hasPoplDir(cwd)) {
91
+ printInfo('.popl directory already exists.');
92
+ return;
93
+ }
94
+ try {
95
+ await initPoplDir(cwd);
96
+ printSuccess('Initialized .popl directory.');
97
+ printInfo('');
98
+ printInfo('Next steps:');
99
+ printInfo(' 1. Edit .popl/config.json to set your author info');
100
+ printInfo(' 2. Run "popl session @last" to create an entry');
101
+ }
102
+ catch (error) {
103
+ const msg = error instanceof Error ? error.message : String(error);
104
+ printError(`Failed to initialize: ${msg}`);
105
+ }
106
+ }
107
+ /**
108
+ * Handle 'popl session' command with @reference resolution
109
+ */
110
+ async function handlePoplSession(args, context, configPath) {
111
+ const cwd = process.cwd();
112
+ const manager = new ConfigManager(configPath);
113
+ const configDir = manager.getConfigDir();
114
+ // Check .popl exists
115
+ if (!hasPoplDir(cwd)) {
116
+ printError('.popl directory not found.');
117
+ printInfo('Run "popl init" to initialize.');
118
+ return;
119
+ }
120
+ // Parse arguments
121
+ let refArg;
122
+ let title;
123
+ let unsafeIncludeRaw = false;
124
+ for (let i = 0; i < args.length; i++) {
125
+ const arg = args[i];
126
+ if (arg === '--title' && i + 1 < args.length) {
127
+ title = args[++i];
128
+ }
129
+ else if (arg === '--unsafe-include-raw') {
130
+ unsafeIncludeRaw = true;
131
+ }
132
+ else if (arg.startsWith('@') || !arg.startsWith('-')) {
133
+ refArg = arg;
134
+ }
135
+ }
136
+ // Default to @this if no reference and we have context
137
+ if (!refArg) {
138
+ if (context.session) {
139
+ refArg = '@this';
140
+ }
141
+ else {
142
+ refArg = '@last';
143
+ }
144
+ }
145
+ // Resolve reference to session ID
146
+ let sessionId;
147
+ if (isRef(refArg)) {
148
+ // Create resolver
149
+ const eventsStore = new EventsStore(configDir);
150
+ const dataProvider = createRefDataProvider(eventsStore);
151
+ const resolver = new RefResolver(dataProvider);
152
+ const resolved = resolver.resolve(refArg, context);
153
+ if (!resolved.success || !resolved.ref) {
154
+ printError(`Failed to resolve reference: ${resolved.error || 'unknown error'}`);
155
+ return;
156
+ }
157
+ // Must have a session
158
+ if (!resolved.ref.session) {
159
+ printError(`Reference does not point to a session: ${refArg}`);
160
+ printInfo('POPL entries require a session. Use @last or cd into a session first.');
161
+ return;
162
+ }
163
+ sessionId = resolved.ref.session;
164
+ }
165
+ else {
166
+ // Literal session ID
167
+ sessionId = refArg;
168
+ }
169
+ // Create POPL entry using service layer
170
+ printInfo(`Creating POPL entry for session: ${sessionId.slice(0, 8)}...`);
171
+ const result = await createSessionPoplEntry(sessionId, configDir, {
172
+ outputRoot: cwd,
173
+ title,
174
+ unsafeIncludeRaw,
175
+ });
176
+ if (!result.success) {
177
+ printError(`Failed to create POPL entry: ${result.error}`);
178
+ return;
179
+ }
180
+ printSuccess('POPL entry created successfully.');
181
+ printInfo('');
182
+ printInfo(` Entry ID: ${result.entryId}`);
183
+ printInfo(` Path: ${result.entryPath}`);
184
+ printInfo(` POPL.yml: ${result.poplYmlPath}`);
185
+ }
186
+ /**
187
+ * Handle 'popl ls' command
188
+ */
189
+ async function handlePoplList() {
190
+ const cwd = process.cwd();
191
+ if (!hasPoplDir(cwd)) {
192
+ printError('.popl directory not found.');
193
+ printInfo('Run "popl init" to initialize.');
194
+ return;
195
+ }
196
+ try {
197
+ const entries = await listPoplEntries(cwd);
198
+ if (entries.length === 0) {
199
+ printInfo('No POPL entries found.');
200
+ printInfo('Run "popl session @last" to create one.');
201
+ return;
202
+ }
203
+ console.log(`\nPOPL Entries (${entries.length}):\n`);
204
+ for (const entry of entries) {
205
+ const doc = await readPoplEntry(entry.path);
206
+ if (doc) {
207
+ console.log(` ${doc.entry.id}`);
208
+ console.log(` Title: ${doc.entry.title}`);
209
+ console.log(` Target: ${doc.target.kind} (${doc.target.ids.connector_id || 'N/A'})`);
210
+ console.log(` Created: ${doc.entry.created_at}`);
211
+ console.log(` Trust: ${doc.entry.trust.label}`);
212
+ console.log('');
213
+ }
214
+ else {
215
+ console.log(` ${entry.id} ${dimText('(invalid POPL.yml)')}`);
216
+ }
217
+ }
218
+ }
219
+ catch (error) {
220
+ const msg = error instanceof Error ? error.message : String(error);
221
+ printError(`Failed to list entries: ${msg}`);
222
+ }
223
+ }
224
+ /**
225
+ * Handle 'popl show' command
226
+ */
227
+ async function handlePoplShow(args) {
228
+ const cwd = process.cwd();
229
+ if (args.length === 0) {
230
+ printError('Usage: popl show <entry-id>');
231
+ return;
232
+ }
233
+ if (!hasPoplDir(cwd)) {
234
+ printError('.popl directory not found.');
235
+ return;
236
+ }
237
+ const entryId = args[0];
238
+ const entriesDir = getPoplEntriesDir(cwd);
239
+ const entryPath = join(entriesDir, entryId);
240
+ const doc = await readPoplEntry(entryPath);
241
+ if (!doc) {
242
+ printError(`Entry not found: ${entryId}`);
243
+ return;
244
+ }
245
+ // Display entry
246
+ console.log('\nPOPL Entry');
247
+ console.log('═══════════════════════════════════════════════════\n');
248
+ console.log(`ID: ${doc.entry.id}`);
249
+ console.log(`Title: ${doc.entry.title}`);
250
+ console.log(`Author: ${doc.entry.author.name}${doc.entry.author.handle ? ` (@${doc.entry.author.handle})` : ''}`);
251
+ console.log(`Created: ${doc.entry.created_at}`);
252
+ console.log(`Trust: ${doc.entry.trust.label} (level ${doc.entry.trust.level})`);
253
+ console.log('\nTarget:');
254
+ console.log(` Kind: ${doc.target.kind}`);
255
+ if (doc.target.ids.connector_id) {
256
+ console.log(` Connector: ${doc.target.ids.connector_id}`);
257
+ }
258
+ if (doc.target.ids.session_id) {
259
+ console.log(` Session: ${doc.target.ids.session_id}`);
260
+ }
261
+ console.log('\nCapture:');
262
+ console.log(` Started: ${doc.capture.window.started_at}`);
263
+ console.log(` Ended: ${doc.capture.window.ended_at}`);
264
+ console.log(` RPC Total: ${doc.capture.summary.rpc_total}`);
265
+ console.log(` Errors: ${doc.capture.summary.errors}`);
266
+ if (doc.capture.summary.latency_ms_p50) {
267
+ console.log(` Latency P50: ${doc.capture.summary.latency_ms_p50}ms`);
268
+ }
269
+ if (doc.capture.summary.latency_ms_p95) {
270
+ console.log(` Latency P95: ${doc.capture.summary.latency_ms_p95}ms`);
271
+ }
272
+ console.log('\nEvidence:');
273
+ console.log(` Redaction: ${doc.evidence.policy.redaction}`);
274
+ console.log(` Ruleset: v${doc.evidence.policy.ruleset_version}`);
275
+ console.log(' Artifacts:');
276
+ for (const artifact of doc.evidence.artifacts) {
277
+ console.log(` - ${artifact.name} ${dimText(`(${artifact.sha256.slice(0, 16)}...)`)}`);
278
+ }
279
+ console.log(`\nPath: ${entryPath}`);
280
+ }
281
+ //# sourceMappingURL=popl-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popl-commands.js","sourceRoot":"","sources":["../../src/shell/popl-commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/shell/repl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyCH;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAwBrF;AAUD;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,aAAa,CAAgD;IACrE,OAAO,CAAC,SAAS,CAAgD;gBAErD,UAAU,EAAE,MAAM;IAY9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAwDvB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4D5B;;OAEG;YACW,WAAW;IA4EzB;;OAEG;YACW,mBAAmB;IAkBjC;;OAEG;YACW,aAAa;IAiC3B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAsEhB;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;YACW,SAAS;IA+IvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;OAKG;YACW,UAAU;IA8BxB;;OAEG;YACW,oBAAoB;IAmClC;;OAEG;YACW,kBAAkB;IAkChC;;OAEG;YACW,cAAc;CAuE7B"}
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/shell/repl.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0CH;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAwBrF;AAUD;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,aAAa,CAAgD;IACrE,OAAO,CAAC,SAAS,CAAgD;gBAErD,UAAU,EAAE,MAAM;IAY9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAwDvB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4D5B;;OAEG;YACW,WAAW;IAkFzB;;OAEG;YACW,mBAAmB;IAkBjC;;OAEG;YACW,aAAa;IAiC3B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAsEhB;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;YACW,SAAS;IA+IvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;OAKG;YACW,UAAU;IA8BxB;;OAEG;YACW,oBAAoB;IAmClC;;OAEG;YACW,kBAAkB;IAkChC;;OAEG;YACW,cAAc;CAuE7B"}
@@ -16,6 +16,7 @@ import { getCurrentSession, setCurrentSession, clearCurrentSession, } from '../u
16
16
  import { handleTool, handleSend } from './tool-commands.js';
17
17
  import { handleRef } from './ref-commands.js';
18
18
  import { handleInscribe } from './inscribe-commands.js';
19
+ import { handlePopl } from './popl-commands.js';
19
20
  // Cache TTL in milliseconds (5 seconds)
20
21
  const CACHE_TTL_MS = 5000;
21
22
  /**
@@ -255,6 +256,11 @@ export class ShellRepl {
255
256
  await handleInscribe(args, this.context, this.configPath);
256
257
  return;
257
258
  }
259
+ // Handle popl command (shell-native, Phase 6.0)
260
+ if (command === 'popl') {
261
+ await handlePopl(args, this.context, this.configPath);
262
+ return;
263
+ }
258
264
  // Handle built-in commands
259
265
  if (SHELL_BUILTINS.includes(command)) {
260
266
  await this.handleBuiltin(command, args);