@a-company/paradigm 3.0.0 → 3.0.1
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/dist/{chunk-MOZPTZ77.js → chunk-GWM2WRXL.js} +1 -1
- package/dist/{chunk-CH6VCTXQ.js → chunk-QS36NGWV.js} +1 -1
- package/dist/{chunk-A5BKW7QV.js → chunk-YCLN7WXV.js} +4 -0
- package/dist/{chunk-2NMUSZFA.js → chunk-ZPN7MXRA.js} +1 -1
- package/dist/{doctor-QMPFQONP.js → doctor-JBIV5PMN.js} +2 -2
- package/dist/index.js +10 -10
- package/dist/{sentinel-J64XJVTU.js → sentinel-RSEXIRXM.js} +1 -1
- package/dist/{server-SKGY7GFZ.js → server-E2CNZC4K.js} +26 -7
- package/dist/{server-VUYAY7TP.js → server-NXG5N7JE.js} +1 -1
- package/dist/{shift-BJKPOYEF.js → shift-NABNKPGL.js} +4 -4
- package/dist/{summary-ZIEIBCAF.js → summary-5SBFO7QK.js} +1 -1
- package/dist/{sync-PF3MJ3E4.js → sync-5KSTPJ4B.js} +2 -2
- package/dist/{university-IXTJCROL.js → university-65YJZ2LW.js} +10 -2
- package/dist/university-content/courses/para-101.json +561 -0
- package/dist/university-content/courses/para-201.json +707 -0
- package/dist/university-content/courses/para-301.json +654 -0
- package/dist/university-content/courses/para-401.json +640 -0
- package/dist/university-content/plsat/v2.0.json +760 -0
- package/dist/university-content/plsat/v3.0.json +1162 -0
- package/dist/university-content/reference.json +336 -0
- package/dist/university-ui/assets/index-CoBFthx2.js +87 -0
- package/dist/university-ui/assets/index-CoBFthx2.js.map +1 -0
- package/dist/university-ui/assets/index-DW2N5NTk.css +1 -0
- package/dist/university-ui/index.html +17 -0
- package/dist/{upgrade-X4PVS7UV.js → upgrade-TIYFQYPO.js} +1 -1
- package/dist/{watch-QYGAIYZ3.js → watch-2XEYUH43.js} +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
{
|
|
2
|
+
"sections": [
|
|
3
|
+
{
|
|
4
|
+
"id": "symbols",
|
|
5
|
+
"title": "Symbol Reference",
|
|
6
|
+
"cards": [
|
|
7
|
+
{
|
|
8
|
+
"id": "component",
|
|
9
|
+
"symbol": "#",
|
|
10
|
+
"name": "Component",
|
|
11
|
+
"description": "Any documented code unit — services, handlers, utilities, hooks, UI components, stores. The universal building block of Paradigm.",
|
|
12
|
+
"examples": ["#PaymentService", "#login-handler", "#user-store"],
|
|
13
|
+
"when": "Always — every code unit you document gets a # prefix. If it's a file, function, class, or module worth naming, it's a component."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "flow",
|
|
17
|
+
"symbol": "$",
|
|
18
|
+
"name": "Flow",
|
|
19
|
+
"description": "A multi-step process with ordered steps spanning multiple components. Documents the sequence of operations that accomplish a business objective.",
|
|
20
|
+
"examples": ["$checkout-flow", "$user-onboarding", "$order-fulfillment"],
|
|
21
|
+
"when": "When logic spans 3+ components in a defined sequence. If steps must happen in order and involve multiple parts of the system, it's a flow."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "gate",
|
|
25
|
+
"symbol": "^",
|
|
26
|
+
"name": "Gate",
|
|
27
|
+
"description": "A condition checkpoint that controls access to resources or operations. Defined in portal.yaml and enforced in middleware or route handlers.",
|
|
28
|
+
"examples": ["^authenticated", "^project-admin", "^comment-author"],
|
|
29
|
+
"when": "When a condition must be verified before proceeding — authentication, role checks, ownership validation, feature flags, rate limits. One responsibility per gate. Compose gates for complex condition logic."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "signal",
|
|
33
|
+
"symbol": "!",
|
|
34
|
+
"name": "Signal",
|
|
35
|
+
"description": "An event that triggers independent side effects. Signals decouple the emitter from subscribers — the emitter doesn't know or care who listens.",
|
|
36
|
+
"examples": ["!payment-completed", "!login-failed", "!user-onboarded"],
|
|
37
|
+
"when": "When an event should trigger side effects (emails, analytics, state updates) without the source needing to know about subscribers. Use signals for decoupled reactions."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "aspect",
|
|
41
|
+
"symbol": "~",
|
|
42
|
+
"name": "Aspect",
|
|
43
|
+
"description": "A cross-cutting rule with REQUIRED code anchors. Aspects enforce patterns across multiple components and must point to the actual enforcement code.",
|
|
44
|
+
"examples": ["~audit-required", "~rate-limited", "~cache-invalidation"],
|
|
45
|
+
"when": "When a rule or pattern must be applied across multiple components (audit logging, rate limiting, caching). Anchors are mandatory — no unanchored aspects allowed."
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "mcp-tools",
|
|
51
|
+
"title": "MCP Tool Reference",
|
|
52
|
+
"cards": [
|
|
53
|
+
{
|
|
54
|
+
"id": "paradigm-status",
|
|
55
|
+
"name": "paradigm_status",
|
|
56
|
+
"description": "Get project overview — symbol counts, project health, and available features. The orientation tool for new sessions.",
|
|
57
|
+
"when": "At the start of every session to understand the project state.",
|
|
58
|
+
"example": "paradigm_status()"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "paradigm-search",
|
|
62
|
+
"name": "paradigm_search",
|
|
63
|
+
"description": "Search for symbols by name, description, or tags. Supports fuzzy matching for typo tolerance.",
|
|
64
|
+
"when": "When you need to find a symbol but don't know its exact name or location.",
|
|
65
|
+
"example": "paradigm_search({ query: 'payment', type: 'component' })"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "paradigm-navigate",
|
|
69
|
+
"name": "paradigm_navigate",
|
|
70
|
+
"description": "Navigate the codebase efficiently. Three intents: 'find' locates a symbol, 'explore' browses an area, 'context' discovers files for a task.",
|
|
71
|
+
"when": "Before reading files — use navigate for discovery, then read only the files you need.",
|
|
72
|
+
"example": "paradigm_navigate({ intent: 'explore', target: 'auth' })"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "paradigm-ripple",
|
|
76
|
+
"name": "paradigm_ripple",
|
|
77
|
+
"description": "Show what depends on a symbol directly and indirectly. Analyzes the cascading impact of modifying a symbol up to N levels deep.",
|
|
78
|
+
"when": "ALWAYS before modifying any symbol. Non-negotiable. This prevents breaking downstream dependencies.",
|
|
79
|
+
"example": "paradigm_ripple({ symbol: '#payment-service', depth: 3 })"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "paradigm-related",
|
|
83
|
+
"name": "paradigm_related",
|
|
84
|
+
"description": "Get all symbols directly related to a given symbol — what it uses and what uses it.",
|
|
85
|
+
"when": "When you need to understand a symbol's immediate connections without the full ripple cascade.",
|
|
86
|
+
"example": "paradigm_related({ symbol: '$checkout-flow' })"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "paradigm-wisdom-context",
|
|
90
|
+
"name": "paradigm_wisdom_context",
|
|
91
|
+
"description": "Get team wisdom — preferences, antipatterns, and architectural decisions — for specific symbols before implementing.",
|
|
92
|
+
"when": "Before making changes to any symbol, especially those with high fragility scores or complex history.",
|
|
93
|
+
"example": "paradigm_wisdom_context({ symbols: ['#payment-service', '^authenticated'] })"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "paradigm-history-fragility",
|
|
97
|
+
"name": "paradigm_history_fragility",
|
|
98
|
+
"description": "Check stability scores and warnings for symbols. High fragility means frequent changes and rollbacks — proceed with caution.",
|
|
99
|
+
"when": "Before modifying symbols that might be unstable. Especially important for critical-path components.",
|
|
100
|
+
"example": "paradigm_history_fragility({ symbols: ['#payment-processor'] })"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"id": "paradigm-gates-for-route",
|
|
104
|
+
"name": "paradigm_gates_for_route",
|
|
105
|
+
"description": "Suggest which gates should be applied to a route based on existing patterns in the project.",
|
|
106
|
+
"when": "ALWAYS when adding a new API endpoint. Get gate suggestions before writing route code.",
|
|
107
|
+
"example": "paradigm_gates_for_route({ route: '/api/projects/:id', method: 'DELETE' })"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "paradigm-orchestrate-inline",
|
|
111
|
+
"name": "paradigm_orchestrate_inline",
|
|
112
|
+
"description": "Plan and coordinate multi-agent task execution. Mode 'plan' returns suggested agents and cost estimate. Mode 'execute' returns full prompts.",
|
|
113
|
+
"when": "When a task affects 3+ files, involves security + implementation, mentions multiple features, or builds end-to-end.",
|
|
114
|
+
"example": "paradigm_orchestrate_inline({ task: 'Add JWT auth to user module', mode: 'plan' })"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "paradigm-pm-preflight",
|
|
118
|
+
"name": "paradigm_pm_preflight",
|
|
119
|
+
"description": "Run pre-implementation governance checks — verifies that planning steps (ripple, wisdom, gates) have been completed before coding.",
|
|
120
|
+
"when": "Before starting implementation on any task to ensure all preparation steps are done.",
|
|
121
|
+
"example": "paradigm_pm_preflight({ task: 'Refactor payment module' })"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"id": "paradigm-pm-postflight",
|
|
125
|
+
"name": "paradigm_pm_postflight",
|
|
126
|
+
"description": "Run post-implementation governance checks — verifies that documentation, history recording, and validation are completed.",
|
|
127
|
+
"when": "After completing implementation to ensure all follow-up steps (purpose files, history, tests) are done.",
|
|
128
|
+
"example": "paradigm_pm_postflight({ task: 'Refactor payment module' })"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"id": "paradigm-flow-validate",
|
|
132
|
+
"name": "paradigm_flow_validate",
|
|
133
|
+
"description": "Validate flow definitions against the codebase. With checkImplementation=true, verifies gates exist, actions are implemented, and signals are emitted.",
|
|
134
|
+
"when": "After modifying flows or their constituent components. Use checkImplementation for deep verification.",
|
|
135
|
+
"example": "paradigm_flow_validate({ flowId: '$checkout-flow', checkImplementation: true })"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"id": "paradigm-aspect-check",
|
|
139
|
+
"name": "paradigm_aspect_check",
|
|
140
|
+
"description": "Verify an aspect has valid anchors and check coverage. Aspects REQUIRE code anchors — this tool validates they exist and point to real code.",
|
|
141
|
+
"when": "After creating or modifying aspects, or when paradigm doctor reports stale anchors.",
|
|
142
|
+
"example": "paradigm_aspect_check({ aspect: '~audit-required' })"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "paradigm-purpose-validate",
|
|
146
|
+
"name": "paradigm_purpose_validate",
|
|
147
|
+
"description": "Validate .purpose files and portal.yaml structural integrity. Checks for missing fields, invalid references, and formatting issues.",
|
|
148
|
+
"when": "Before committing changes to .purpose files or portal.yaml. Also useful as a CI check.",
|
|
149
|
+
"example": "paradigm_purpose_validate({ includePortal: true })"
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"id": "cli-commands",
|
|
155
|
+
"title": "CLI Command Reference",
|
|
156
|
+
"cards": [
|
|
157
|
+
{
|
|
158
|
+
"id": "init",
|
|
159
|
+
"command": "paradigm shift",
|
|
160
|
+
"description": "Initialize Paradigm in a project. Creates .paradigm/ directory, config.yaml, and optionally portal.yaml. Auto-detects discipline from project structure.",
|
|
161
|
+
"flags": ["--force: Overwrite existing Paradigm config", "--quick: Skip slow operations like scan indexing"]
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"id": "scan",
|
|
165
|
+
"command": "paradigm scan",
|
|
166
|
+
"description": "Scan the codebase and rebuild the symbol index. Reads all .purpose files, portal.yaml, and generates navigator.yaml for fast lookups.",
|
|
167
|
+
"flags": ["--verbose: Show detailed scan progress", "--fix: Attempt to auto-fix minor issues found during scan"]
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"id": "doctor",
|
|
171
|
+
"command": "paradigm doctor",
|
|
172
|
+
"description": "Validate consistency between Paradigm files and the codebase. Reports errors (broken references), warnings (stale anchors), and info (pending tags).",
|
|
173
|
+
"flags": ["--fix: Auto-fix issues where possible", "--strict: Treat warnings as errors", "--json: Output results as JSON for CI integration"]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"id": "sync",
|
|
177
|
+
"command": "paradigm sync",
|
|
178
|
+
"description": "Synchronize Paradigm files with the current codebase state. Updates navigator.yaml, refreshes indexes, and reconciles any drift.",
|
|
179
|
+
"flags": ["--dry-run: Show what would be synced without making changes", "--force: Overwrite local changes with indexed state"]
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"id": "sentinel",
|
|
183
|
+
"command": "paradigm sentinel",
|
|
184
|
+
"description": "View and manage production incidents, failure patterns, and system health metrics. The operational intelligence dashboard.",
|
|
185
|
+
"flags": ["--status <status>: Filter by incident status (open, investigating, resolved)", "--symbol <sym>: Filter by symbol", "--period <period>: Time period for stats (1d, 7d, 30d)"]
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"id": "team-orchestrate",
|
|
189
|
+
"command": "paradigm team orchestrate \"<task>\"",
|
|
190
|
+
"description": "AI-coordinated multi-agent execution. Analyzes the task, selects agents, plans stages, and executes with handoffs between agents.",
|
|
191
|
+
"flags": ["--solo: Single Claude mode (no agent splitting)", "--compare: A/B test solo vs faceted approach", "--dry-run: Show plan without executing"]
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"id": "team-spawn",
|
|
195
|
+
"command": "paradigm team spawn <agent> --task \"<task>\"",
|
|
196
|
+
"description": "Spawn a single agent with a specific role (architect, builder, tester, reviewer, security) for a focused task.",
|
|
197
|
+
"flags": ["--task \"<desc>\": The task description (required)", "--model <model>: Override the default model for this agent", "--context <file>: Additional context file to include"]
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"id": "mcp-setup",
|
|
201
|
+
"command": "paradigm mcp setup",
|
|
202
|
+
"description": "Configure MCP (Model Context Protocol) integration. Sets up the paradigm-mcp binary for Claude Code, Cursor, or other MCP-compatible clients.",
|
|
203
|
+
"flags": ["--client <client>: Target client (claude-code, cursor, generic)", "--global: Install globally for all projects"]
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "promote",
|
|
207
|
+
"command": "paradigm promote <tag>",
|
|
208
|
+
"description": "Promote a suggested tag to the project section of tags.yaml. Part of the governance workflow where humans approve AI-suggested tags.",
|
|
209
|
+
"flags": ["--to core: Promote to core section instead of project", "--reject: Reject and remove the suggested tag"]
|
|
210
|
+
}
|
|
211
|
+
]
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"id": "tags",
|
|
215
|
+
"title": "Tag Reference",
|
|
216
|
+
"cards": [
|
|
217
|
+
{
|
|
218
|
+
"id": "feature",
|
|
219
|
+
"name": "[feature]",
|
|
220
|
+
"description": "Marks a component as a user-facing feature.",
|
|
221
|
+
"example": "#checkout with tags: [feature, critical]"
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"id": "integration",
|
|
225
|
+
"name": "[integration]",
|
|
226
|
+
"description": "Marks a component as an external service integration. Often paired with the service name.",
|
|
227
|
+
"example": "#stripe-service with tags: [integration, stripe]"
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"id": "state",
|
|
231
|
+
"name": "[state]",
|
|
232
|
+
"description": "Marks a component as a state management unit.",
|
|
233
|
+
"example": "#user-store with tags: [state]"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"id": "critical",
|
|
237
|
+
"name": "[critical]",
|
|
238
|
+
"description": "Marks a symbol as critical-path — failure here causes significant user or business impact. Triggers extra scrutiny in reviews and orchestration.",
|
|
239
|
+
"example": "#payment-processor with tags: [feature, critical]"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"id": "security",
|
|
243
|
+
"name": "[security]",
|
|
244
|
+
"description": "Marks a symbol as security-relevant. Components, aspects, or gates with this tag should involve the security agent during orchestration.",
|
|
245
|
+
"example": "~input-sanitization with tags: [security, compliance]"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"id": "compliance",
|
|
249
|
+
"name": "[compliance]",
|
|
250
|
+
"description": "Marks a symbol as compliance-related (GDPR, SOC2, PCI, etc.). Often paired with [security] on aspects that enforce regulatory requirements.",
|
|
251
|
+
"example": "~audit-required with tags: [compliance, security]"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"id": "deprecated",
|
|
255
|
+
"name": "[deprecated]",
|
|
256
|
+
"description": "Marks a symbol as deprecated — still functional but scheduled for removal. AI agents should suggest alternatives when encountering deprecated symbols.",
|
|
257
|
+
"example": "#legacy-auth-handler with tags: [deprecated]"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"id": "idea",
|
|
261
|
+
"name": "[idea]",
|
|
262
|
+
"description": "Marks a symbol as experimental or in the ideation phase. Not yet approved for production use.",
|
|
263
|
+
"example": "#voice-checkout with tags: [idea, feature]"
|
|
264
|
+
}
|
|
265
|
+
]
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"id": "workflow",
|
|
269
|
+
"title": "Workflow Quick Reference",
|
|
270
|
+
"cards": [
|
|
271
|
+
{
|
|
272
|
+
"id": "adding-a-feature",
|
|
273
|
+
"name": "Adding a Feature",
|
|
274
|
+
"steps": [
|
|
275
|
+
"1. Call paradigm_orchestrate_inline({ task: '...', mode: 'plan' }) if 3+ files involved",
|
|
276
|
+
"2. Call paradigm_navigate({ intent: 'context', task: '...' }) to discover relevant files",
|
|
277
|
+
"3. Check paradigm_wisdom_context for related symbols",
|
|
278
|
+
"4. If adding API endpoints: call paradigm_gates_for_route for gate suggestions",
|
|
279
|
+
"5. Update portal.yaml with new routes and gates (if applicable)",
|
|
280
|
+
"6. Implement the feature code",
|
|
281
|
+
"7. Create/update the nearest .purpose file with #component and [feature] tag",
|
|
282
|
+
"8. Add !signals for events and $flows for multi-step processes",
|
|
283
|
+
"9. Record implementation with paradigm_history_record",
|
|
284
|
+
"10. Commit with Paradigm format: type(#symbol): description + Symbols: trailer"
|
|
285
|
+
]
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"id": "adding-an-endpoint",
|
|
289
|
+
"name": "Adding an API Endpoint",
|
|
290
|
+
"steps": [
|
|
291
|
+
"1. Call paradigm_gates_for_route({ route: '/api/...', method: 'POST' })",
|
|
292
|
+
"2. Add the route to portal.yaml with the suggested gates",
|
|
293
|
+
"3. Implement the endpoint with gate enforcement in middleware",
|
|
294
|
+
"4. Add #component to the nearest .purpose file",
|
|
295
|
+
"5. Test that unauthorized access returns 403",
|
|
296
|
+
"6. Commit with the route and gate symbols in the Symbols: trailer"
|
|
297
|
+
]
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"id": "before-modifying",
|
|
301
|
+
"name": "Before Modifying a Symbol",
|
|
302
|
+
"steps": [
|
|
303
|
+
"1. Call paradigm_ripple({ symbol: '#target', depth: 2 }) to check impact",
|
|
304
|
+
"2. Call paradigm_wisdom_context({ symbols: ['#target'] }) for team knowledge",
|
|
305
|
+
"3. Call paradigm_history_fragility({ symbols: ['#target'] }) for stability warnings",
|
|
306
|
+
"4. If fragility is HIGH: review paradigm_history_context for recent changes",
|
|
307
|
+
"5. Read the source file only after completing discovery steps",
|
|
308
|
+
"6. After changes: record with paradigm_history_record and update .purpose files"
|
|
309
|
+
]
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"id": "starting-a-session",
|
|
313
|
+
"name": "Starting a New Session",
|
|
314
|
+
"steps": [
|
|
315
|
+
"1. Call paradigm_session_recover to load breadcrumbs from previous sessions",
|
|
316
|
+
"2. Call paradigm_status for project overview and health",
|
|
317
|
+
"3. Read .paradigm/config.yaml for project discipline and conventions",
|
|
318
|
+
"4. Check if portal.yaml exists (for gate-protected projects)",
|
|
319
|
+
"5. Use paradigm_navigate with 'context' intent for your specific task"
|
|
320
|
+
]
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"id": "preparing-a-handoff",
|
|
324
|
+
"name": "Preparing a Handoff",
|
|
325
|
+
"steps": [
|
|
326
|
+
"1. Call paradigm_context_check to confirm handoff is recommended",
|
|
327
|
+
"2. Finish or checkpoint the current task",
|
|
328
|
+
"3. Call paradigm_handoff_prepare with: summary, modifiedFiles, symbolsTouched, nextSteps, openQuestions",
|
|
329
|
+
"4. Inform the user of the handoff file location",
|
|
330
|
+
"5. In the new session: call paradigm_session_recover to pick up where you left off"
|
|
331
|
+
]
|
|
332
|
+
}
|
|
333
|
+
]
|
|
334
|
+
}
|
|
335
|
+
]
|
|
336
|
+
}
|