@contextium/cli 1.0.51 → 1.0.53

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.
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const startCommand: Command;
3
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0bnC,eAAO,MAAM,YAAY,SAeM,CAAA"}
@@ -0,0 +1,420 @@
1
+ import { Command } from 'commander';
2
+ import { ApiClient } from '../lib/api-client.js';
3
+ import { loadConfig } from '../lib/config.js';
4
+ import { chalk, ora } from '../lib/output.js';
5
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
6
+ async function resolveWorkspace(client, workspaceOption) {
7
+ const { data: workspacesData } = await client.get('/workspaces');
8
+ const workspaces = workspacesData.data || workspacesData;
9
+ if (workspaceOption) {
10
+ const ws = workspaces.find((w) => w.slug?.toLowerCase() === workspaceOption.toLowerCase() ||
11
+ w.name?.toLowerCase() === workspaceOption.toLowerCase() ||
12
+ w.id === workspaceOption);
13
+ if (!ws)
14
+ throw new Error(`Workspace "${workspaceOption}" not found`);
15
+ return ws;
16
+ }
17
+ if (workspaces.length === 1)
18
+ return workspaces[0];
19
+ throw new Error('Multiple workspaces found. Specify one with -w, --workspace.');
20
+ }
21
+ function toSlug(name) {
22
+ return name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
23
+ }
24
+ function inferQualityRole(context) {
25
+ const c = context.toLowerCase();
26
+ if (/\b(code|app|api|software|build|feature|engineer|develop|backend|frontend)\b/.test(c))
27
+ return 'Regression Tester';
28
+ if (/\b(write|paper|document|article|essay|report|draft|blog|whitepaper)\b/.test(c))
29
+ return 'Proofreader';
30
+ if (/\b(pitch|deck|investor|present|slide)\b/.test(c))
31
+ return 'Deck Reviewer';
32
+ if (/\b(market|campaign|copy|brand|content|ad|social)\b/.test(c))
33
+ return 'Copy Reviewer';
34
+ return 'Quality Reviewer';
35
+ }
36
+ function buildProjectState(name, description, today) {
37
+ const about = description || name;
38
+ return `# ${name} — Project State
39
+
40
+ ## Current Position
41
+ **Phase:** Phase 1: Foundation
42
+ **Status:** Not Started
43
+ **Last Updated:** ${today}
44
+ **Next Action:** Begin Phase 1
45
+
46
+ ## About
47
+ ${about}
48
+
49
+ ## Phases
50
+
51
+ ### Phase 1: Foundation
52
+ **Status:** Not Started
53
+ Initial setup, research, and planning for ${name}.
54
+
55
+ ### Phase 2: Core Build
56
+ **Status:** Not Started
57
+ Primary implementation phase.
58
+
59
+ ### Phase 3: Polish & Launch
60
+ **Status:** Not Started
61
+ Testing, refinement, and delivery.
62
+
63
+ ## Decisions Log
64
+ | Decision | Rationale | Phase |
65
+ |----------|-----------|-------|
66
+ | _(none yet)_ | | |
67
+
68
+ ## Seeds
69
+ | Idea | When to revisit | Context |
70
+ |------|-----------------|---------|
71
+ | _(none yet)_ | | |
72
+
73
+ ## Notes
74
+ _(ad-hoc notes that don't fit elsewhere)_
75
+ `;
76
+ }
77
+ function buildResearchBrief(name, description, deep, today) {
78
+ const scope = description || (deep ? `A comprehensive investigation into ${name}.` : `An investigation into ${name}.`);
79
+ if (deep) {
80
+ return `# Deep Dive: ${name}
81
+
82
+ **Started:** ${today}
83
+ **Status:** In Progress
84
+ **Depth:** Deep
85
+
86
+ ## Scope
87
+ ${scope}
88
+
89
+ ## Research Questions
90
+ _(to be defined by Research Lead)_
91
+
92
+ ## Landscape Overview
93
+ _(to be populated)_
94
+
95
+ ## Key Findings
96
+ _(to be populated)_
97
+
98
+ ## Competing Approaches
99
+ _(to be populated)_
100
+
101
+ ## Risks & Concerns
102
+ _(to be populated)_
103
+
104
+ ## Recommendations
105
+ _(to be populated)_
106
+
107
+ ## Sources
108
+ _(to be populated)_
109
+ `;
110
+ }
111
+ return `# Research: ${name}
112
+
113
+ **Started:** ${today}
114
+ **Status:** In Progress
115
+ **Depth:** Quick
116
+
117
+ ## Scope
118
+ ${scope}
119
+
120
+ ## Research Questions
121
+ - What is ${name} and how does it work?
122
+ - What are the key considerations?
123
+ - What are the best existing approaches or solutions?
124
+
125
+ ## Findings
126
+ _(to be populated by Research Agent)_
127
+
128
+ ## Sources
129
+ _(to be populated)_
130
+
131
+ ## Summary
132
+ _(to be populated)_
133
+ `;
134
+ }
135
+ function escapeTableCell(text) {
136
+ return text.replace(/\|/g, '\\|').replace(/\n/g, ' ');
137
+ }
138
+ function appendToSeedsSection(content, idea, today) {
139
+ const seedsHeader = '## Seeds';
140
+ const idx = content.indexOf(seedsHeader);
141
+ const newRow = `| ${escapeTableCell(idea)} | When relevant | Captured ${today} |`;
142
+ if (idx === -1) {
143
+ return content.trimEnd() + `\n\n## Seeds\n| Idea | When to revisit | Context |\n|------|-----------------|----------|\n${newRow}\n`;
144
+ }
145
+ const afterSeeds = content.slice(idx);
146
+ const nextSectionMatch = afterSeeds.match(/\n## /);
147
+ const seedsBlock = nextSectionMatch ? afterSeeds.slice(0, nextSectionMatch.index) : afterSeeds;
148
+ if (seedsBlock.includes('_(none yet)_')) {
149
+ const updated = content.replace(/\|\s*_\(none yet\)_\s*\|\s*\|\s*\|/, newRow);
150
+ if (updated !== content)
151
+ return updated;
152
+ }
153
+ const insertAt = nextSectionMatch ? idx + (nextSectionMatch.index ?? seedsBlock.length) : content.length;
154
+ return content.slice(0, insertAt).trimEnd() + '\n' + newRow + '\n' + content.slice(insertAt);
155
+ }
156
+ // ─── start project ────────────────────────────────────────────────────────────
157
+ const startProjectCommand = new Command('project')
158
+ .description('Autonomously create a full project workspace (library, agents, workflow, project-state.md)')
159
+ .argument('<name>', 'Project name')
160
+ .option('-d, --description <text>', 'What the project is about')
161
+ .option('-w, --workspace <slug>', 'Workspace name, slug, or ID')
162
+ .action(async (name, options) => {
163
+ const spinner = ora(`Setting up project "${name}"...`).start();
164
+ try {
165
+ const config = await loadConfig();
166
+ const client = new ApiClient(config.api_key, config.api_url);
167
+ const workspace = await resolveWorkspace(client, options.workspace);
168
+ const wid = workspace.id;
169
+ const desc = options.description || '';
170
+ const today = new Date().toISOString().split('T')[0];
171
+ // Check for duplicate library
172
+ const { data: projectsData } = await client.get(`/workspaces/${wid}/projects`);
173
+ const projectList = Array.isArray(projectsData) ? projectsData : (projectsData.projects || projectsData.data || []);
174
+ const existing = projectList.find((p) => p.name?.toLowerCase() === name.toLowerCase());
175
+ if (existing) {
176
+ spinner.warn(`Project "${name}" already exists`);
177
+ console.log(` Library: ${chalk.dim(existing.id)}`);
178
+ return;
179
+ }
180
+ // Create library
181
+ // Creating library
182
+ const { data: library } = await client.post(`/workspaces/${wid}/projects`, { name, slug: toSlug(name), description: desc });
183
+ const libraryId = library.id;
184
+ // Create agents
185
+ const qualityRole = inferQualityRole(name + ' ' + desc);
186
+ const agentDefs = [
187
+ { name: `${name} — Project Architect`, systemPrompt: `You are the Project Architect for **${name}**. Your role is to define the technical direction, break the project into clear phases, make and lock architectural decisions, and ensure consistency across all work.\n\nProject context: ${desc || name}` },
188
+ { name: `${name} — Project Planner`, systemPrompt: `You are the Project Planner for **${name}**. Your role is to break the project into well-scoped phases, estimate effort, sequence work correctly, and keep project-state.md up to date as work progresses.\n\nProject context: ${desc || name}` },
189
+ { name: `${name} — Researcher`, systemPrompt: `You are the Researcher for **${name}**. Your role is to investigate technical unknowns, gather relevant context, compare approaches, and surface findings that inform the project's direction.\n\nProject context: ${desc || name}` },
190
+ { name: `${name} — ${qualityRole}`, systemPrompt: `You are the ${qualityRole} for **${name}**. Your role is to review deliverables for quality, correctness, and completeness before they are considered done.\n\nProject context: ${desc || name}` },
191
+ ];
192
+ const agents = [];
193
+ for (const def of agentDefs) {
194
+ // Creating agent
195
+ const { data: agent } = await client.post(`/workspaces/${wid}/agents`, { name: def.name, systemPrompt: def.systemPrompt });
196
+ agents.push({ name: def.name, id: agent.id });
197
+ }
198
+ // Create workflow
199
+ // Creating workflow
200
+ const { data: workflow } = await client.post(`/workspaces/${wid}/workflows`, {
201
+ name,
202
+ description: `Project workspace for ${name}`,
203
+ agentIds: agents.map(a => a.id),
204
+ projectIds: [libraryId],
205
+ });
206
+ // Create project-state.md
207
+ // Writing project-state.md
208
+ const { data: stateFile } = await client.post(`/projects/${libraryId}/files`, {
209
+ title: `${name} — Project State`,
210
+ path: 'project-state.md',
211
+ content: buildProjectState(name, desc, today),
212
+ });
213
+ spinner.succeed(`Project "${name}" is ready`);
214
+ console.log(` Library: ${chalk.bold(name)} ${chalk.dim('(' + libraryId + ')')}`);
215
+ console.log(` Workflow: ${chalk.bold(name)} ${chalk.dim('(' + workflow.id + ')')}`);
216
+ console.log(` Agents: ${agents.map(a => a.name.split('—')[1]?.trim()).join(', ')}`);
217
+ console.log(` Files: ${chalk.dim(stateFile.path || 'project-state.md')}`);
218
+ }
219
+ catch (err) {
220
+ spinner.fail(err.message || 'Failed to set up project');
221
+ process.exit(1);
222
+ }
223
+ });
224
+ // ─── start research ───────────────────────────────────────────────────────────
225
+ const startResearchCommand = new Command('research')
226
+ .description('Autonomously create a research workspace (library, agents, workflow, research-brief.md)')
227
+ .argument('<name>', 'Research topic name')
228
+ .option('-d, --description <text>', 'What to research')
229
+ .option('--depth <level>', 'quick (default) or deep', 'quick')
230
+ .option('-w, --workspace <slug>', 'Workspace name, slug, or ID')
231
+ .action(async (name, options) => {
232
+ const isDeep = options.depth === 'deep';
233
+ const libraryName = `Research: ${name}`;
234
+ const workflowName = isDeep ? `${name} Deep Dive` : `${name} Research`;
235
+ const spinner = ora(`Setting up research workspace "${workflowName}"...`).start();
236
+ try {
237
+ const config = await loadConfig();
238
+ const client = new ApiClient(config.api_key, config.api_url);
239
+ const workspace = await resolveWorkspace(client, options.workspace);
240
+ const wid = workspace.id;
241
+ const desc = options.description || '';
242
+ const today = new Date().toISOString().split('T')[0];
243
+ // Check for duplicate
244
+ const { data: projectsData } = await client.get(`/workspaces/${wid}/projects`);
245
+ const projectList = Array.isArray(projectsData) ? projectsData : (projectsData.projects || projectsData.data || []);
246
+ const existing = projectList.find((p) => p.name?.toLowerCase() === libraryName.toLowerCase());
247
+ if (existing) {
248
+ spinner.warn(`Research workspace "${libraryName}" already exists`);
249
+ console.log(` Library: ${chalk.dim(existing.id)}`);
250
+ return;
251
+ }
252
+ // Create research library
253
+ // Creating research library
254
+ const { data: library } = await client.post(`/workspaces/${wid}/projects`, { name: libraryName, slug: toSlug(libraryName), description: desc });
255
+ const libraryId = library.id;
256
+ // Create agents
257
+ const agents = [];
258
+ if (isDeep) {
259
+ // Creating Research Lead
260
+ const { data: lead } = await client.post(`/workspaces/${wid}/agents`, {
261
+ name: `${name} — Research Lead`,
262
+ systemPrompt: `You are the Research Lead for **${name}**. Your role is to drive a thorough investigation of this topic, structure findings across multiple angles, compare approaches and solutions, and produce clear, citable research documents.\n\nResearch context: ${desc || name}`,
263
+ });
264
+ agents.push({ name: `${name} — Research Lead`, id: lead.id });
265
+ // Creating Fact Checker
266
+ const { data: checker } = await client.post(`/workspaces/${wid}/agents`, {
267
+ name: `${name} — Fact Checker`,
268
+ systemPrompt: `You are the Fact Checker for the **${name}** research project. Your role is to validate every claim made by the Research Lead — verify against primary sources, flag unsupported assertions, and ensure all citations are accurate and traceable.\n\nResearch context: ${desc || name}`,
269
+ });
270
+ agents.push({ name: `${name} — Fact Checker`, id: checker.id });
271
+ }
272
+ else {
273
+ // Creating Research Agent
274
+ const { data: researcher } = await client.post(`/workspaces/${wid}/agents`, {
275
+ name: `${name} — Research Agent`,
276
+ systemPrompt: `You are the Research Agent for **${name}**. Your role is to investigate this topic, surface key findings, compare existing solutions, and summarise results clearly in the research library.\n\nResearch context: ${desc || name}`,
277
+ });
278
+ agents.push({ name: `${name} — Research Agent`, id: researcher.id });
279
+ }
280
+ // Create workflow
281
+ // Creating workflow
282
+ const { data: workflow } = await client.post(`/workspaces/${wid}/workflows`, {
283
+ name: workflowName,
284
+ description: `Research workspace for ${name}`,
285
+ agentIds: agents.map(a => a.id),
286
+ projectIds: [libraryId],
287
+ });
288
+ // Create research-brief.md
289
+ // Writing research-brief.md
290
+ const { data: briefFile } = await client.post(`/projects/${libraryId}/files`, {
291
+ title: `${name} — Research Brief`,
292
+ path: 'research-brief.md',
293
+ content: buildResearchBrief(name, desc, isDeep, today),
294
+ });
295
+ spinner.succeed(`Research workspace ready`);
296
+ console.log(` Library: ${chalk.bold(libraryName)} ${chalk.dim('(' + libraryId + ')')}`);
297
+ console.log(` Workflow: ${chalk.bold(workflowName)} ${chalk.dim('(' + workflow.id + ')')}`);
298
+ console.log(` Agents: ${agents.map(a => a.name.split('—')[1]?.trim()).join(', ')}`);
299
+ console.log(` Files: ${chalk.dim(briefFile.path || 'research-brief.md')}`);
300
+ }
301
+ catch (err) {
302
+ spinner.fail(err.message || 'Failed to set up research workspace');
303
+ process.exit(1);
304
+ }
305
+ });
306
+ // ─── start idea ───────────────────────────────────────────────────────────────
307
+ const startIdeaCommand = new Command('idea')
308
+ .description('Capture a quick idea or note into a project\'s seeds or Quick Notes')
309
+ .argument('<text>', 'The idea or note to capture')
310
+ .option('-p, --project <name>', 'Project to attach the idea to')
311
+ .option('-w, --workspace <slug>', 'Workspace name, slug, or ID')
312
+ .action(async (text, options) => {
313
+ const spinner = ora('Saving idea...').start();
314
+ try {
315
+ const config = await loadConfig();
316
+ const client = new ApiClient(config.api_key, config.api_url);
317
+ const workspace = await resolveWorkspace(client, options.workspace);
318
+ const wid = workspace.id;
319
+ const today = new Date().toISOString().split('T')[0];
320
+ const { data: projectsData } = await client.get(`/workspaces/${wid}/projects`);
321
+ const projectList = Array.isArray(projectsData) ? projectsData : (projectsData.projects || projectsData.data || []);
322
+ // 1. Find target library
323
+ let targetLibrary = null;
324
+ if (options.project) {
325
+ targetLibrary =
326
+ projectList.find((p) => p.name?.toLowerCase() === options.project.toLowerCase()) ??
327
+ projectList.find((p) => p.name?.toLowerCase().includes(options.project.toLowerCase()));
328
+ }
329
+ else {
330
+ // Find libraries with a project-state.md
331
+ const withState = [];
332
+ for (const project of projectList) {
333
+ if (project.isSystem)
334
+ continue;
335
+ try {
336
+ const { data: filesData } = await client.get(`/projects/${project.id}/files`);
337
+ const files = Array.isArray(filesData) ? filesData : (filesData.files || filesData.data || []);
338
+ if (files.some((f) => f.path === 'project-state.md')) {
339
+ withState.push(project);
340
+ }
341
+ }
342
+ catch {
343
+ // skip
344
+ }
345
+ }
346
+ if (withState.length === 1)
347
+ targetLibrary = withState[0];
348
+ }
349
+ // 2. Try to append to project-state.md Seeds section
350
+ if (targetLibrary) {
351
+ try {
352
+ const { data: filesData } = await client.get(`/projects/${targetLibrary.id}/files`);
353
+ const files = Array.isArray(filesData) ? filesData : (filesData.files || filesData.data || []);
354
+ const stateFile = files.find((f) => f.path === 'project-state.md');
355
+ if (stateFile) {
356
+ const { data: fileDetail } = await client.get(`/files/${stateFile.id}`);
357
+ const currentContent = fileDetail.content || '';
358
+ const updatedContent = appendToSeedsSection(currentContent, text, today);
359
+ await client.put(`/files/${stateFile.id}`, { content: updatedContent });
360
+ spinner.succeed(`Idea saved to "${targetLibrary.name}" project seeds`);
361
+ return;
362
+ }
363
+ }
364
+ catch {
365
+ // fall through
366
+ }
367
+ }
368
+ // 3. Find or create Quick Notes library
369
+ let quickNotesLib = projectList.find((p) => p.name?.toLowerCase() === 'quick notes' || p.name?.toLowerCase().includes('quick notes'));
370
+ if (!quickNotesLib) {
371
+ // Creating Quick Notes library
372
+ const { data: newLib } = await client.post(`/workspaces/${wid}/projects`, {
373
+ name: 'Quick Notes',
374
+ slug: 'quick-notes',
375
+ description: 'Captured ideas and quick notes',
376
+ });
377
+ quickNotesLib = newLib;
378
+ }
379
+ // Find or create quick-notes.md
380
+ const { data: qnFilesData } = await client.get(`/projects/${quickNotesLib.id}/files`);
381
+ const qnFiles = Array.isArray(qnFilesData) ? qnFilesData : (qnFilesData.files || qnFilesData.data || []);
382
+ const existingNote = qnFiles.find((f) => f.path === 'quick-notes.md');
383
+ if (existingNote) {
384
+ const { data: fileDetail } = await client.get(`/files/${existingNote.id}`);
385
+ const currentContent = fileDetail.content || '';
386
+ const updatedContent = currentContent.trimEnd() + `\n| ${escapeTableCell(text)} | ${today} |\n`;
387
+ await client.put(`/files/${existingNote.id}`, { content: updatedContent });
388
+ }
389
+ else {
390
+ await client.post(`/projects/${quickNotesLib.id}/files`, {
391
+ title: 'Quick Notes',
392
+ path: 'quick-notes.md',
393
+ content: `# Quick Notes\n\n| Idea | Captured |\n|------|----------|\n| ${escapeTableCell(text)} | ${today} |\n`,
394
+ });
395
+ }
396
+ spinner.succeed('Idea saved to Quick Notes');
397
+ }
398
+ catch (err) {
399
+ spinner.fail(err.message || 'Failed to save idea');
400
+ process.exit(1);
401
+ }
402
+ });
403
+ // ─── start (parent command) ───────────────────────────────────────────────────
404
+ export const startCommand = new Command('start')
405
+ .description('Create projects, research workspaces, or capture ideas')
406
+ .addHelpText('after', `
407
+ Subcommands:
408
+ project <name> Create a full project (library, agents, workflow, project-state.md)
409
+ research <name> Create a research workspace (library, agents, workflow, research-brief.md)
410
+ idea <text> Capture an idea into a project's seeds or Quick Notes
411
+
412
+ Examples:
413
+ contextium start project "CRM Redesign" --description "Customer tool for SMBs" -w my-ws
414
+ contextium start research "AI Todo Lists" --depth deep -w my-ws
415
+ contextium start idea "Add dark mode support" --project "CRM Redesign" -w my-ws
416
+ `)
417
+ .addCommand(startProjectCommand)
418
+ .addCommand(startResearchCommand)
419
+ .addCommand(startIdeaCommand);
420
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -32,6 +32,7 @@ import { purgeCommand } from './commands/purge.js';
32
32
  import { versionsCommand } from './commands/versions.js';
33
33
  import { structureCommand } from './commands/structure.js';
34
34
  import { notifyCommand } from './commands/notify.js';
35
+ import { startCommand } from './commands/start.js';
35
36
  import { recordCommand, maybeShowReviewPrompt } from './lib/review-prompt.js';
36
37
  import { createRequire } from 'module';
37
38
  const require = createRequire(import.meta.url);
@@ -53,6 +54,7 @@ Command Groups:
53
54
  Tags: tags list, tags types, tags create, tags create-type, tags search, tags apply, tags remove
54
55
  Workflows: workflows list, workflows create, workflow load
55
56
  Team: notify
57
+ Start: start project, start research, start idea
56
58
  Agents: agents list, agents create, agents add-skill, agents remove-skill
57
59
  Skills: skills list, skills create
58
60
  Identities: identities list, identities create
@@ -122,6 +124,7 @@ program.addCommand(purgeCommand);
122
124
  program.addCommand(versionsCommand);
123
125
  program.addCommand(structureCommand);
124
126
  program.addCommand(notifyCommand);
127
+ program.addCommand(startCommand);
125
128
  // Skip review prompt for auth/meta commands
126
129
  const SKIP_REVIEW_COMMANDS = new Set(['login', 'logout', 'whoami', 'setup', 'setup-claude']);
127
130
  program.hook('postAction', async (thisCommand) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAEtC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,0HAA0H,CAAC;KAEvI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC;KACrC,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CvB,CAAC,CAAA;AAEF,gBAAgB;AAChB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AAEjC,iBAAiB;AACjB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;AAEtC,gBAAgB;AAChB,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;AACrC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACpC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACpC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAC9B,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;AACrC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;AACtC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAA;AACxC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;AACrC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAA;AACxC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAA;AACxC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AAEjC,4CAA4C;AAC5C,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA;AAE5F,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;IAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,aAAa,EAAE,CAAA;QACrB,MAAM,qBAAqB,EAAE,CAAA;IAC/B,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,qBAAqB;AACrB,OAAO,CAAC,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contextium/cli",
3
- "version": "1.0.51",
3
+ "version": "1.0.53",
4
4
  "description": "Command-line tool for managing Contextium documentation, agents, skills, and workflows — pipe context to AI coding assistants",
5
5
  "keywords": [
6
6
  "contextium",
@@ -5,6 +5,9 @@ allowed-tools:
5
5
  - Bash
6
6
  - mcp__contextium__load_workflow
7
7
  - mcp__contextium__list_workflows
8
+ - mcp__contextium__add_task
9
+ - mcp__contextium__update_task_status
10
+ - mcp__contextium__list_tasks
8
11
  ---
9
12
 
10
13
  <objective>
@@ -74,11 +77,24 @@ Agents:
74
77
 
75
78
  Skills:
76
79
  - "<name>" (id: <id>)
80
+
81
+ Tasks:
82
+ - [IN PROGRESS] <title> (id: <taskId>)
83
+ - [TODO] <title> (id: <taskId>)
84
+ No active tasks. ← use this line if tasks array is empty
77
85
  --- END SESSION CONTEXT ---
78
86
 
79
87
  Workflow loaded. What would you like to do?
80
88
  ```
81
89
 
90
+ 5. After outputting the session context block, apply task awareness:
91
+
92
+ - If there are **in_progress** tasks: note the first one as the active task and ask if the user wants to resume it.
93
+ - If there are only **not_started** tasks: note the first one as the suggested next action. Do not auto-start — let the user direct the session.
94
+ - If you create new action items during the session: call `add_task` to record them for the team.
95
+ - When a task is complete: call `update_task_status(taskId, 'done')`.
96
+ - Do not work on multiple tasks simultaneously.
97
+
82
98
  If a workflow name was specified directly in the user's message, skip step 1 and load immediately.
83
99
  If no workspace is specified, use the default from .contextiumrc or ask the user.
84
100
  </process>