@nepopsx/cli 0.0.19 → 0.0.21
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/agents/catalog.d.ts +19 -0
- package/dist/agents/catalog.d.ts.map +1 -0
- package/dist/agents/catalog.js +45 -0
- package/dist/agents/catalog.js.map +1 -0
- package/dist/agents/configuration.d.ts +1 -0
- package/dist/agents/configuration.d.ts.map +1 -1
- package/dist/agents/configuration.js +36 -0
- package/dist/agents/configuration.js.map +1 -1
- package/dist/agents/configuration.test.d.ts +2 -0
- package/dist/agents/configuration.test.d.ts.map +1 -0
- package/dist/agents/configuration.test.js +32 -0
- package/dist/agents/configuration.test.js.map +1 -0
- package/dist/commands/capture.d.ts +19 -0
- package/dist/commands/capture.d.ts.map +1 -0
- package/dist/commands/capture.js +105 -0
- package/dist/commands/capture.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +11 -30
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts +2 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +86 -15
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/login.d.ts +8 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +169 -80
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/push-learnings.d.ts.map +1 -1
- package/dist/commands/push-learnings.js +95 -63
- package/dist/commands/push-learnings.js.map +1 -1
- package/dist/commands/sync.d.ts +4 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +120 -64
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/up.d.ts +23 -0
- package/dist/commands/up.d.ts.map +1 -0
- package/dist/commands/up.js +263 -0
- package/dist/commands/up.js.map +1 -0
- package/dist/enrichment/workflow.d.ts +1 -0
- package/dist/enrichment/workflow.d.ts.map +1 -1
- package/dist/enrichment/workflow.js +13 -0
- package/dist/enrichment/workflow.js.map +1 -1
- package/dist/generator/preview.d.ts +13 -0
- package/dist/generator/preview.d.ts.map +1 -0
- package/dist/generator/preview.js +242 -0
- package/dist/generator/preview.js.map +1 -0
- package/dist/generator/preview.test.d.ts +19 -0
- package/dist/generator/preview.test.d.ts.map +1 -0
- package/dist/generator/preview.test.js +289 -0
- package/dist/generator/preview.test.js.map +1 -0
- package/dist/generator/render.d.ts +2 -2
- package/dist/generator/render.d.ts.map +1 -1
- package/dist/generator/render.js +37 -18
- package/dist/generator/render.js.map +1 -1
- package/dist/generator/writer.d.ts +15 -1
- package/dist/generator/writer.d.ts.map +1 -1
- package/dist/generator/writer.js +41 -3
- package/dist/generator/writer.js.map +1 -1
- package/dist/hooks/capture-hooks.d.ts +9 -0
- package/dist/hooks/capture-hooks.d.ts.map +1 -0
- package/dist/hooks/capture-hooks.js +100 -0
- package/dist/hooks/capture-hooks.js.map +1 -0
- package/dist/hooks/capture-hooks.test.d.ts +2 -0
- package/dist/hooks/capture-hooks.test.d.ts.map +1 -0
- package/dist/hooks/capture-hooks.test.js +50 -0
- package/dist/hooks/capture-hooks.test.js.map +1 -0
- package/dist/index.js +26 -3
- package/dist/index.js.map +1 -1
- package/dist/learnings/yaml-learnings.d.ts +16 -2
- package/dist/learnings/yaml-learnings.d.ts.map +1 -1
- package/dist/learnings/yaml-learnings.js +43 -8
- package/dist/learnings/yaml-learnings.js.map +1 -1
- package/dist/learnings/yaml-learnings.test.d.ts +2 -0
- package/dist/learnings/yaml-learnings.test.d.ts.map +1 -0
- package/dist/learnings/yaml-learnings.test.js +39 -0
- package/dist/learnings/yaml-learnings.test.js.map +1 -0
- package/dist/licensing/installer.d.ts +2 -2
- package/dist/licensing/installer.d.ts.map +1 -1
- package/dist/licensing/installer.js +3 -1
- package/dist/licensing/installer.js.map +1 -1
- package/dist/licensing/template-fetch.d.ts +2 -2
- package/dist/licensing/template-fetch.d.ts.map +1 -1
- package/dist/licensing/template-fetch.js +4 -1
- package/dist/licensing/template-fetch.js.map +1 -1
- package/dist/mcp/config-generator.d.ts +42 -0
- package/dist/mcp/config-generator.d.ts.map +1 -0
- package/dist/mcp/config-generator.js +55 -0
- package/dist/mcp/config-generator.js.map +1 -0
- package/dist/mcp/config-generator.test.d.ts +7 -0
- package/dist/mcp/config-generator.test.d.ts.map +1 -0
- package/dist/mcp/config-generator.test.js +79 -0
- package/dist/mcp/config-generator.test.js.map +1 -0
- package/dist/ruflo/config-generator.d.ts +22 -0
- package/dist/ruflo/config-generator.d.ts.map +1 -0
- package/dist/ruflo/config-generator.js +89 -0
- package/dist/ruflo/config-generator.js.map +1 -0
- package/dist/ruflo/config-generator.test.d.ts +2 -0
- package/dist/ruflo/config-generator.test.d.ts.map +1 -0
- package/dist/ruflo/config-generator.test.js +18 -0
- package/dist/ruflo/config-generator.test.js.map +1 -0
- package/dist/ruflo/detect.d.ts +11 -0
- package/dist/ruflo/detect.d.ts.map +1 -0
- package/dist/ruflo/detect.js +30 -0
- package/dist/ruflo/detect.js.map +1 -0
- package/dist/ruflo/index.d.ts +3 -0
- package/dist/ruflo/index.d.ts.map +1 -0
- package/dist/ruflo/index.js +3 -0
- package/dist/ruflo/index.js.map +1 -0
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +1 -1
- package/dist/security/index.js.map +1 -1
- package/dist/security/integrity.d.ts +8 -0
- package/dist/security/integrity.d.ts.map +1 -1
- package/dist/security/integrity.js +28 -0
- package/dist/security/integrity.js.map +1 -1
- package/package.json +5 -3
- package/dist/generator/package-renderer.d.ts +0 -38
- package/dist/generator/package-renderer.d.ts.map +0 -1
- package/dist/generator/package-renderer.js +0 -181
- package/dist/generator/package-renderer.js.map +0 -1
- package/dist/generator/provider-transform.d.ts +0 -15
- package/dist/generator/provider-transform.d.ts.map +0 -1
- package/dist/generator/provider-transform.js +0 -163
- package/dist/generator/provider-transform.js.map +0 -1
- package/dist/licensing/fingerprint.test.d.ts +0 -2
- package/dist/licensing/fingerprint.test.d.ts.map +0 -1
- package/dist/licensing/fingerprint.test.js +0 -41
- package/dist/licensing/fingerprint.test.js.map +0 -1
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Transforms agent markdown frontmatter for different AI editor providers.
|
|
3
|
-
*
|
|
4
|
-
* GitHub Copilot agents use full frontmatter (model, tools, agents, handoffs).
|
|
5
|
-
* Claude Code agents use minimal frontmatter (name, description, user-invocable, color).
|
|
6
|
-
* Other providers TBD — fall through with no transformation.
|
|
7
|
-
*/
|
|
8
|
-
const FRONTMATTER_RE = /^---\n([\s\S]*?)\n---\n?([\s\S]*)$/;
|
|
9
|
-
/**
|
|
10
|
-
* Parse YAML frontmatter from a markdown file.
|
|
11
|
-
* Returns null if no frontmatter block is found.
|
|
12
|
-
*/
|
|
13
|
-
function parseFrontmatter(content) {
|
|
14
|
-
const match = content.match(FRONTMATTER_RE);
|
|
15
|
-
if (!match)
|
|
16
|
-
return null;
|
|
17
|
-
const [, yamlBlock, body] = match;
|
|
18
|
-
const frontmatter = {};
|
|
19
|
-
// Simple YAML key-value parser (handles strings, booleans, arrays)
|
|
20
|
-
let currentKey = null;
|
|
21
|
-
let currentArray = null;
|
|
22
|
-
for (const line of yamlBlock.split('\n')) {
|
|
23
|
-
const trimmed = line.trim();
|
|
24
|
-
// Array item
|
|
25
|
-
if (trimmed.startsWith('- ') && currentKey && currentArray !== null) {
|
|
26
|
-
currentArray.push(trimmed.slice(2).trim());
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
// Flush previous array
|
|
30
|
-
if (currentKey && currentArray !== null) {
|
|
31
|
-
frontmatter[currentKey] = currentArray;
|
|
32
|
-
currentArray = null;
|
|
33
|
-
currentKey = null;
|
|
34
|
-
}
|
|
35
|
-
// Key-value pair
|
|
36
|
-
const kvMatch = trimmed.match(/^([a-z_-]+):\s*(.*)$/i);
|
|
37
|
-
if (!kvMatch)
|
|
38
|
-
continue;
|
|
39
|
-
const [, key, value] = kvMatch;
|
|
40
|
-
if (value === '' || value === undefined) {
|
|
41
|
-
// Could be start of an array
|
|
42
|
-
currentKey = key;
|
|
43
|
-
currentArray = [];
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
// Scalar value
|
|
47
|
-
let parsed = value;
|
|
48
|
-
if (value === 'true')
|
|
49
|
-
parsed = true;
|
|
50
|
-
else if (value === 'false')
|
|
51
|
-
parsed = false;
|
|
52
|
-
else if (/^\d+$/.test(value))
|
|
53
|
-
parsed = parseInt(value, 10);
|
|
54
|
-
else if (value.startsWith('"') && value.endsWith('"'))
|
|
55
|
-
parsed = value.slice(1, -1);
|
|
56
|
-
frontmatter[key] = parsed;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
// Flush final array
|
|
60
|
-
if (currentKey && currentArray !== null) {
|
|
61
|
-
frontmatter[currentKey] = currentArray;
|
|
62
|
-
}
|
|
63
|
-
return { frontmatter, body, raw: content };
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Serialize frontmatter back to YAML string.
|
|
67
|
-
*/
|
|
68
|
-
function serializeFrontmatter(fm) {
|
|
69
|
-
const lines = [];
|
|
70
|
-
for (const [key, value] of Object.entries(fm)) {
|
|
71
|
-
if (value === undefined || value === null)
|
|
72
|
-
continue;
|
|
73
|
-
if (Array.isArray(value)) {
|
|
74
|
-
lines.push(`${key}:`);
|
|
75
|
-
for (const item of value) {
|
|
76
|
-
lines.push(` - ${item}`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else if (typeof value === 'string' && (value.includes(':') || value.includes('"') || value.includes("'") || value.startsWith('[') || value.startsWith('{'))) {
|
|
80
|
-
lines.push(`${key}: "${value.replace(/"/g, '\\"')}"`);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
lines.push(`${key}: ${value}`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return lines.join('\n');
|
|
87
|
-
}
|
|
88
|
-
/** Keys to strip from frontmatter when converting to Claude Code format. */
|
|
89
|
-
const COPILOT_ONLY_KEYS = new Set(['model', 'tools', 'agents', 'handoffs']);
|
|
90
|
-
/** Color assignment based on agent role patterns. */
|
|
91
|
-
function inferColor(name) {
|
|
92
|
-
if (name.includes('orchestrat'))
|
|
93
|
-
return 'green';
|
|
94
|
-
if (name.includes('planner') || name.includes('architect'))
|
|
95
|
-
return 'blue';
|
|
96
|
-
if (name.includes('executor') || name.includes('developer'))
|
|
97
|
-
return 'orange';
|
|
98
|
-
if (name.includes('reflector') || name.includes('reflect'))
|
|
99
|
-
return 'purple';
|
|
100
|
-
if (name.includes('reviewer'))
|
|
101
|
-
return 'yellow';
|
|
102
|
-
if (name.includes('scanner'))
|
|
103
|
-
return 'cyan';
|
|
104
|
-
if (name.includes('writer'))
|
|
105
|
-
return 'orange';
|
|
106
|
-
if (name.includes('qa'))
|
|
107
|
-
return 'red';
|
|
108
|
-
return 'blue';
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Determine if an agent file represents an orchestrator.
|
|
112
|
-
* Orchestrators have `agents:` in their frontmatter (they dispatch to sub-agents).
|
|
113
|
-
* In Claude Code, orchestrators become commands, not agents.
|
|
114
|
-
*/
|
|
115
|
-
function isOrchestratorAgent(fm) {
|
|
116
|
-
return Array.isArray(fm.agents) && fm.agents.length > 0;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Transform an agent markdown file for Claude Code provider.
|
|
120
|
-
*
|
|
121
|
-
* - Strips model, tools, agents, handoffs from frontmatter
|
|
122
|
-
* - Adds name (from filename) and color
|
|
123
|
-
* - Preserves description and user-invocable
|
|
124
|
-
* - Returns null for orchestrator agents (they become commands in Claude)
|
|
125
|
-
*/
|
|
126
|
-
function transformForClaudeCode(content, fileName) {
|
|
127
|
-
const parsed = parseFrontmatter(content);
|
|
128
|
-
if (!parsed)
|
|
129
|
-
return content; // No frontmatter — pass through
|
|
130
|
-
// Orchestrators become commands, not agents
|
|
131
|
-
if (isOrchestratorAgent(parsed.frontmatter))
|
|
132
|
-
return null;
|
|
133
|
-
const agentName = fileName.replace(/\.agent\.md(\.hbs)?$/, '');
|
|
134
|
-
const claudeFm = {
|
|
135
|
-
name: agentName,
|
|
136
|
-
};
|
|
137
|
-
// Preserve description
|
|
138
|
-
if (parsed.frontmatter.description) {
|
|
139
|
-
claudeFm.description = parsed.frontmatter.description;
|
|
140
|
-
}
|
|
141
|
-
// Preserve user-invocable
|
|
142
|
-
if (parsed.frontmatter['user-invocable'] !== undefined) {
|
|
143
|
-
claudeFm['user-invocable'] = parsed.frontmatter['user-invocable'];
|
|
144
|
-
}
|
|
145
|
-
claudeFm.color = inferColor(agentName);
|
|
146
|
-
return `---\n${serializeFrontmatter(claudeFm)}\n---\n${parsed.body}`;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Transform an agent file's content for the target provider.
|
|
150
|
-
* Returns the transformed content, or null if the file should be skipped
|
|
151
|
-
* (e.g., orchestrators in Claude Code — they become commands).
|
|
152
|
-
*/
|
|
153
|
-
export function transformAgentForProvider(content, fileName, provider) {
|
|
154
|
-
switch (provider) {
|
|
155
|
-
case 'claude-code':
|
|
156
|
-
return transformForClaudeCode(content, fileName);
|
|
157
|
-
case 'github-copilot':
|
|
158
|
-
return content; // No transformation needed
|
|
159
|
-
default:
|
|
160
|
-
return content; // Other providers TBD — pass through
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
//# sourceMappingURL=provider-transform.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-transform.js","sourceRoot":"","sources":["../../src/generator/provider-transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.test.d.ts","sourceRoot":"","sources":["../../src/licensing/fingerprint.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test from 'node:test';
|
|
3
|
-
import { applySteganography, decodeSteganography, fingerprintToId, forensicDecode } from './fingerprint.js';
|
|
4
|
-
const FINGERPRINT = 'acfed951acbe';
|
|
5
|
-
const TRACEABILITY_TEMPLATE = `Visible heading
|
|
6
|
-
outside collisions: never verify the search for according to
|
|
7
|
-
### Execution Checklist
|
|
8
|
-
|
|
9
|
-
- Before starting work, Make sure to read the following steps and all required artifacts.
|
|
10
|
-
- You must check the current workspace state and Run the listed service commands immediately after opening the task.
|
|
11
|
-
- If an error occurs, do not guess: proceed with the fallback path as described below and report back when finished.
|
|
12
|
-
- Begin by asking a quick question to confirm that the current assumptions still hold; at this point, look for changes based on new evidence.
|
|
13
|
-
- Review the output before you complete the task.
|
|
14
|
-
- It is important to note that as a result, in addition, explanations should stay concise.
|
|
15
|
-
### Service Commands
|
|
16
|
-
|
|
17
|
-
- Lint: pnpm lint
|
|
18
|
-
outside collisions: Prior to beginning work continue with additionally
|
|
19
|
-
`;
|
|
20
|
-
test('applySteganography encodes inside the execution checklist section only', () => {
|
|
21
|
-
const rendered = applySteganography(TRACEABILITY_TEMPLATE, FINGERPRINT);
|
|
22
|
-
const expectedId = fingerprintToId(FINGERPRINT);
|
|
23
|
-
assert.equal(decodeSteganography(rendered), expectedId);
|
|
24
|
-
const forensic = forensicDecode(rendered);
|
|
25
|
-
assert.equal(forensic.stego_fp_hex, expectedId.toString(16).padStart(6, '0'));
|
|
26
|
-
assert.equal(forensic.confidence, 1);
|
|
27
|
-
assert.match(rendered, /outside collisions: never verify the search for according to/);
|
|
28
|
-
});
|
|
29
|
-
test('decodeSteganography falls back to whole-content scanning for legacy files', () => {
|
|
30
|
-
const legacyTemplate = `
|
|
31
|
-
Before starting work, Make sure to read the following steps and all required artifacts.
|
|
32
|
-
You must check the current workspace state and Run the listed service commands immediately after opening the task.
|
|
33
|
-
If an error occurs, do not guess: proceed with the fallback path as described below and report back when finished.
|
|
34
|
-
Begin by asking a quick question to confirm that the current assumptions still hold; at this point, look for changes based on new evidence.
|
|
35
|
-
Review the output before you complete the task.
|
|
36
|
-
It is important to note that as a result, in addition, explanations should stay concise.
|
|
37
|
-
`;
|
|
38
|
-
const rendered = applySteganography(legacyTemplate, FINGERPRINT);
|
|
39
|
-
assert.equal(decodeSteganography(rendered), fingerprintToId(FINGERPRINT));
|
|
40
|
-
});
|
|
41
|
-
//# sourceMappingURL=fingerprint.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.test.js","sourceRoot":"","sources":["../../src/licensing/fingerprint.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE5G,MAAM,WAAW,GAAG,cAAc,CAAC;AAEnC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;CAc7B,CAAC;AAEF,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;IAClF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAErC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,8DAA8D,CAAC,CAAC;AACzF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2EAA2E,EAAE,GAAG,EAAE;IACrF,MAAM,cAAc,GAAG;;;;;;;CAOxB,CAAC;IAEA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACjE,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC"}
|