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.
- package/README.ja.md +272 -95
- package/README.md +200 -311
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/popl.d.ts +16 -0
- package/dist/commands/popl.d.ts.map +1 -0
- package/dist/commands/popl.js +495 -0
- package/dist/commands/popl.js.map +1 -0
- package/dist/popl/artifacts.d.ts +78 -0
- package/dist/popl/artifacts.d.ts.map +1 -0
- package/dist/popl/artifacts.js +205 -0
- package/dist/popl/artifacts.js.map +1 -0
- package/dist/popl/index.d.ts +10 -0
- package/dist/popl/index.d.ts.map +1 -0
- package/dist/popl/index.js +14 -0
- package/dist/popl/index.js.map +1 -0
- package/dist/popl/sanitizer.d.ts +86 -0
- package/dist/popl/sanitizer.d.ts.map +1 -0
- package/dist/popl/sanitizer.js +271 -0
- package/dist/popl/sanitizer.js.map +1 -0
- package/dist/popl/service.d.ts +46 -0
- package/dist/popl/service.d.ts.map +1 -0
- package/dist/popl/service.js +231 -0
- package/dist/popl/service.js.map +1 -0
- package/dist/popl/types.d.ts +195 -0
- package/dist/popl/types.d.ts.map +1 -0
- package/dist/popl/types.js +20 -0
- package/dist/popl/types.js.map +1 -0
- package/dist/shell/popl-commands.d.ts +26 -0
- package/dist/shell/popl-commands.d.ts.map +1 -0
- package/dist/shell/popl-commands.js +281 -0
- package/dist/shell/popl-commands.js.map +1 -0
- package/dist/shell/repl.d.ts.map +1 -1
- package/dist/shell/repl.js +6 -0
- package/dist/shell/repl.js.map +1 -1
- 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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"}
|
package/dist/shell/repl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/shell/repl.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
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"}
|
package/dist/shell/repl.js
CHANGED
|
@@ -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);
|