@contextium/cli 0.3.1 → 0.3.2

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 workflowCommand: Command;
3
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,eAAe,SAiLxB,CAAA"}
@@ -0,0 +1,159 @@
1
+ import { Command } from 'commander';
2
+ import { ApiClient } from '../lib/api-client.js';
3
+ import { loadConfig } from '../lib/config.js';
4
+ import { Cache } from '../lib/cache.js';
5
+ import { chalk, ora } from '../lib/output.js';
6
+ export const workflowCommand = new Command('workflow')
7
+ .description('Load a workflow and activate all its connected resources')
8
+ .argument('<workflow>', 'Workflow name or ID')
9
+ .requiredOption('--workspace <slug>', 'Workspace name or slug')
10
+ .option('--sync', 'Sync context library files to local cache')
11
+ .option('--format <format>', 'Output format (text|json)', 'text')
12
+ .action(async (workflowName, options) => {
13
+ const spinner = ora('Loading workflow...').start();
14
+ try {
15
+ const config = await loadConfig();
16
+ const client = new ApiClient(config.api_key, config.api_url);
17
+ // Find workspace
18
+ const { data: workspacesData } = await client.get('/workspaces');
19
+ const workspaces = workspacesData.data || workspacesData;
20
+ const workspace = workspaces.find((w) => w.slug.toLowerCase().trim() === options.workspace.toLowerCase().trim() ||
21
+ w.name.toLowerCase().trim() === options.workspace.toLowerCase().trim());
22
+ if (!workspace) {
23
+ spinner.fail(`Workspace '${options.workspace}' not found`);
24
+ console.log();
25
+ console.log(chalk.dim('Available workspaces:'));
26
+ workspaces.forEach((w) => {
27
+ console.log(chalk.dim(` - ${w.name} (${w.slug})`));
28
+ });
29
+ process.exit(1);
30
+ }
31
+ // Find workflow by name or ID
32
+ const { data: workflowsData } = await client.get(`/workspaces/${workspace.id}/workflows`);
33
+ const workflows = workflowsData.data || workflowsData;
34
+ const workflow = workflows.find((wf) => wf.id === workflowName ||
35
+ wf.name.toLowerCase().trim() === workflowName.toLowerCase().trim());
36
+ if (!workflow) {
37
+ spinner.fail(`Workflow '${workflowName}' not found in workspace '${workspace.name}'`);
38
+ console.log();
39
+ if (workflows.length > 0) {
40
+ console.log(chalk.dim('Available workflows:'));
41
+ workflows.forEach((wf) => {
42
+ console.log(chalk.dim(` - ${wf.name}`));
43
+ });
44
+ }
45
+ process.exit(1);
46
+ }
47
+ // Load all workflow resources
48
+ spinner.setText = `Loading resources for '${workflow.name}'...`;
49
+ const { data: resourcesData } = await client.get(`/workspaces/${workspace.id}/workflows/${workflow.id}/load`);
50
+ const resources = resourcesData.data || resourcesData;
51
+ spinner.stop();
52
+ if (options.format === 'json') {
53
+ console.log(JSON.stringify(resources, null, 2));
54
+ return;
55
+ }
56
+ // --- Display ---
57
+ console.log();
58
+ console.log(chalk.bold(`⚡ Workflow: `) + chalk.cyan(resources.workflow?.name || workflow.name));
59
+ if (resources.workflow?.description) {
60
+ console.log(chalk.dim(` ${resources.workflow.description}`));
61
+ }
62
+ console.log();
63
+ // Agents
64
+ const agents = resources.agents || [];
65
+ console.log(chalk.bold(`Agents (${agents.length}):`));
66
+ if (agents.length === 0) {
67
+ console.log(chalk.dim(' None'));
68
+ }
69
+ else {
70
+ agents.forEach((agent) => {
71
+ const personaLabel = agent.persona?.name ? chalk.dim(` [${agent.persona.name}]`) : '';
72
+ console.log(` ${chalk.cyan(agent.name)}${personaLabel}`);
73
+ if (agent.description) {
74
+ console.log(chalk.dim(` ${agent.description}`));
75
+ }
76
+ });
77
+ }
78
+ console.log();
79
+ // Skills
80
+ const skills = resources.skills || [];
81
+ console.log(chalk.bold(`Skills (${skills.length}):`));
82
+ if (skills.length === 0) {
83
+ console.log(chalk.dim(' None'));
84
+ }
85
+ else {
86
+ skills.forEach((skill) => {
87
+ console.log(` ${chalk.cyan(skill.title || skill.name)}`);
88
+ });
89
+ }
90
+ console.log();
91
+ // Context Libraries
92
+ const libraries = resources.contextLibraries || [];
93
+ console.log(chalk.bold(`Context Libraries (${libraries.length}):`));
94
+ if (libraries.length === 0) {
95
+ console.log(chalk.dim(' None'));
96
+ }
97
+ else {
98
+ libraries.forEach((lib) => {
99
+ console.log(` ${chalk.cyan(lib.name)}`);
100
+ if (lib.description) {
101
+ console.log(chalk.dim(` ${lib.description}`));
102
+ }
103
+ });
104
+ }
105
+ console.log();
106
+ // Tags
107
+ const tags = resources.tagDetails || [];
108
+ console.log(chalk.bold(`Tags (${tags.length}):`));
109
+ if (tags.length === 0) {
110
+ console.log(chalk.dim(' None'));
111
+ }
112
+ else {
113
+ console.log(` ${tags.map((t) => chalk.dim(t.value || t.id)).join(' ')}`);
114
+ }
115
+ console.log();
116
+ // Files
117
+ const files = resources.files || [];
118
+ console.log(chalk.bold(`Files (${files.length}):`));
119
+ if (files.length === 0) {
120
+ console.log(chalk.dim(' No files connected to this workflow'));
121
+ }
122
+ else {
123
+ files.forEach((file) => {
124
+ console.log(chalk.white(` ${file.title}`), chalk.dim(`(v${file.currentVersion})`));
125
+ });
126
+ }
127
+ console.log();
128
+ // Sync files to cache if requested
129
+ if (options.sync && files.length > 0) {
130
+ const cache = new Cache(config.cache);
131
+ const syncSpinner = ora(`Syncing ${files.length} files to cache...`).start();
132
+ let downloaded = 0;
133
+ let cached = 0;
134
+ for (const file of files) {
135
+ const cachedFile = await cache.get(file.title);
136
+ if (cachedFile && cachedFile.currentVersion === file.currentVersion) {
137
+ cached++;
138
+ continue;
139
+ }
140
+ const { data: fileData } = await client.get(`/files/${file.id}`);
141
+ await cache.set(file.title, fileData);
142
+ downloaded++;
143
+ }
144
+ syncSpinner.succeed(`Synced ${files.length} files (${downloaded} downloaded, ${cached} already cached)`);
145
+ console.log();
146
+ }
147
+ else if (files.length > 0) {
148
+ console.log(chalk.dim(`To sync files to cache: contextium workflow "${workflowName}" --workspace ${options.workspace} --sync`));
149
+ console.log();
150
+ }
151
+ console.log(chalk.green(`✓ Workflow '${workflow.name}' loaded`));
152
+ console.log();
153
+ }
154
+ catch (error) {
155
+ spinner.fail(`Failed to load workflow: ${error.message}`);
156
+ process.exit(1);
157
+ }
158
+ });
159
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const workflowsCommand: Command;
3
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/commands/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,eAAO,MAAM,gBAAgB,SAoEzB,CAAA"}
@@ -0,0 +1,65 @@
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
+ export const workflowsCommand = new Command('workflows')
6
+ .description('List workflows in a workspace')
7
+ .argument('<workspace>', 'Workspace name or slug')
8
+ .action(async (workspaceName) => {
9
+ const spinner = ora('Loading workflows...').start();
10
+ try {
11
+ const config = await loadConfig();
12
+ const client = new ApiClient(config.api_key, config.api_url);
13
+ // Find workspace by name or slug
14
+ const { data: workspacesData } = await client.get('/workspaces');
15
+ const workspaces = workspacesData.data || workspacesData;
16
+ const workspace = workspaces.find((w) => w.slug.toLowerCase().trim() === workspaceName.toLowerCase().trim() ||
17
+ w.name.toLowerCase().trim() === workspaceName.toLowerCase().trim());
18
+ if (!workspace) {
19
+ spinner.fail(`Workspace '${workspaceName}' not found`);
20
+ console.log();
21
+ console.log(chalk.dim('Available workspaces:'));
22
+ workspaces.forEach((w) => {
23
+ console.log(chalk.dim(` - ${w.name} (${w.slug})`));
24
+ });
25
+ process.exit(1);
26
+ }
27
+ const { data: workflowsData } = await client.get(`/workspaces/${workspace.id}/workflows`);
28
+ const workflows = workflowsData.data || workflowsData;
29
+ spinner.stop();
30
+ if (!workflows || workflows.length === 0) {
31
+ console.log(chalk.yellow(`\nNo workflows found in workspace '${workspace.name}'`));
32
+ return;
33
+ }
34
+ console.log(chalk.bold(`\nWorkflows in '${workspace.name}':\n`));
35
+ for (const workflow of workflows) {
36
+ const parts = [];
37
+ if (workflow.agentIds?.length)
38
+ parts.push(`${workflow.agentIds.length} agent${workflow.agentIds.length !== 1 ? 's' : ''}`);
39
+ if (workflow.skillIds?.length)
40
+ parts.push(`${workflow.skillIds.length} skill${workflow.skillIds.length !== 1 ? 's' : ''}`);
41
+ if (workflow.projectIds?.length || workflow.projectId) {
42
+ const libCount = workflow.projectIds?.length || 1;
43
+ parts.push(`${libCount} context librar${libCount !== 1 ? 'ies' : 'y'}`);
44
+ }
45
+ if (workflow.tagIds?.length)
46
+ parts.push(`${workflow.tagIds.length} tag${workflow.tagIds.length !== 1 ? 's' : ''}`);
47
+ console.log(chalk.cyan(` ${workflow.name}`));
48
+ if (workflow.description) {
49
+ console.log(chalk.dim(` ${workflow.description}`));
50
+ }
51
+ if (parts.length > 0) {
52
+ console.log(chalk.dim(` ${parts.join(', ')}`));
53
+ }
54
+ console.log(chalk.gray(` id: ${workflow.id}`));
55
+ console.log();
56
+ }
57
+ console.log(chalk.dim(`To load a workflow: contextium workflow load "<name>" --workspace ${workspace.slug}`));
58
+ console.log();
59
+ }
60
+ catch (error) {
61
+ spinner.fail(`Failed to load workflows: ${error.message}`);
62
+ process.exit(1);
63
+ }
64
+ });
65
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/commands/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACrD,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,aAAqB,EAAE,EAAE;IACtC,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAA;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QAE5D,iCAAiC;QACjC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAChE,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,IAAI,cAAc,CAAA;QAExD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAC3C,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;YAClE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CACnE,CAAA;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,cAAc,aAAa,aAAa,CAAC,CAAA;YACtD,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAA;YAC/C,UAAU,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;YACrD,CAAC,CAAC,CAAA;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,SAAS,CAAC,EAAE,YAAY,CAAC,CAAA;QACzF,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,IAAI,aAAa,CAAA;QAErD,OAAO,CAAC,IAAI,EAAE,CAAA;QAEd,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;YAClF,OAAM;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,IAAI,MAAM,CAAC,CAAC,CAAA;QAEhE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,SAAS,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC1H,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,SAAS,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC1H,IAAI,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAA;gBACjD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,kBAAkB,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;YACzE,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAElH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAC7C,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;YACvD,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACnD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YACjD,OAAO,CAAC,GAAG,EAAE,CAAA;QACf,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qEAAqE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC7G,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA"}
package/dist/index.js CHANGED
@@ -10,6 +10,8 @@ import { statusCommand } from './commands/status.js';
10
10
  import { searchCommand } from './commands/search.js';
11
11
  import { workspacesCommand } from './commands/workspaces.js';
12
12
  import { librariesCommand } from './commands/projects.js';
13
+ import { workflowsCommand } from './commands/workflows.js';
14
+ import { workflowCommand } from './commands/workflow.js';
13
15
  import { filesCommand } from './commands/files.js';
14
16
  import { findCommand } from './commands/find.js';
15
17
  import { setupClaudeCommand } from './commands/setup-claude.js';
@@ -18,7 +20,7 @@ const program = new Command();
18
20
  program
19
21
  .name('contextium')
20
22
  .description('Contextium CLI — sync documentation and pipe to AI coding assistants')
21
- .version('0.3.0')
23
+ .version('0.3.2')
22
24
  .addHelpText('after', `
23
25
  Claude Code Skill:
24
26
  This CLI includes a built-in Claude Code skill. When Claude Code runs
@@ -30,6 +32,7 @@ Claude Code Skill:
30
32
  Example Claude Code prompts:
31
33
  "Search my Contextium docs for authentication guides"
32
34
  "List all workspaces and show me the files in the dev context library"
35
+ "Load the 'Marketing' workflow and sync all its files"
33
36
  "Sync my docs and output everything tagged foundation-context"
34
37
 
35
38
  Skill location: .claude/skills/contextium/SKILL.md
@@ -43,6 +46,8 @@ program.addCommand(initCommand);
43
46
  program.addCommand(setupClaudeCommand);
44
47
  // Data commands
45
48
  program.addCommand(workspacesCommand);
49
+ program.addCommand(workflowsCommand);
50
+ program.addCommand(workflowCommand);
46
51
  program.addCommand(librariesCommand);
47
52
  program.addCommand(filesCommand);
48
53
  program.addCommand(findCommand);
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,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,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,sEAAsE,CAAC;KACnF,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;CAcvB,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,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,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;AAE/B,qBAAqB;AACrB,OAAO,CAAC,KAAK,EAAE,CAAA"}
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,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,sEAAsE,CAAC;KACnF,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;CAevB,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,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;AAE/B,qBAAqB;AACrB,OAAO,CAAC,KAAK,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contextium/cli",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Command-line tool for syncing Contextium documentation to local cache and piping to AI coding assistants",
5
5
  "keywords": [
6
6
  "contextium",