@aiwg/cli 2026.8.8 → 2026.8.10
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.md +23 -8
- package/THIRD_PARTY_NOTICES.md +35 -0
- package/agentic/code/providers/capability-matrix.yaml +3 -3
- package/bin/aiwg.mjs +125 -0
- package/dist/src/artifacts/backends/graphology-backend.js +4 -3
- package/dist/src/artifacts/backends/sqlite-backend.js +4 -5
- package/dist/src/artifacts/cli.js +2 -2
- package/dist/src/artifacts/corpus-tools/cli.js +27 -0
- package/dist/src/artifacts/corpus-tools/profile-embed.js +3 -2
- package/dist/src/artifacts/corpus-tools/retrieval-lab.js +356 -0
- package/dist/src/artifacts/discover-facets.js +2 -2
- package/dist/src/artifacts/embedding-index.js +9 -8
- package/dist/src/artifacts/graph-backend.js +2 -2
- package/dist/src/artifacts/query-engine.js +21 -7
- package/dist/src/artifacts/repair.js +47 -0
- package/dist/src/artifacts/types.js +3 -3
- package/dist/src/cli/command-log.js +2 -2
- package/dist/src/cli/handlers/artifacts.js +50 -1
- package/dist/src/cli/handlers/cost-report.js +71 -0
- package/dist/src/cli/handlers/evidence.js +78 -0
- package/dist/src/cli/handlers/help.js +9 -0
- package/dist/src/cli/handlers/index.js +8 -3
- package/dist/src/cli/handlers/local-executor.js +4 -3
- package/dist/src/cli/handlers/refresh.js +20 -8
- package/dist/src/cli/handlers/regenerate.js +3 -3
- package/dist/src/cli/handlers/serve.js +15 -36
- package/dist/src/cli/handlers/setup-manifest.js +8 -1
- package/dist/src/cli/handlers/use.js +256 -70
- package/dist/src/cli/handlers/utilities.js +149 -0
- package/dist/src/cli/handlers/workspace.js +10 -0
- package/dist/src/cli/help-generator.js +2 -1
- package/dist/src/cli/router.js +4 -1
- package/dist/src/cli/services/deployment-verification.js +596 -0
- package/dist/src/cli/skill-usage.js +2 -2
- package/dist/src/cli/workflow-orchestrator.js +1 -1
- package/dist/src/cli/workspace-signals.js +2 -2
- package/dist/src/config/aiwg-config.js +54 -27
- package/dist/src/config/cli.js +3 -3
- package/dist/src/config/project-artifacts-health.js +2 -0
- package/dist/src/config/project-artifacts-health.mjs +123 -0
- package/dist/src/config/project-artifacts-runtime.mjs +16 -0
- package/dist/src/config/project-artifacts.js +2 -1
- package/dist/src/cost/fleet-report.js +329 -0
- package/dist/src/evidence/bundle.js +256 -0
- package/dist/src/extensions/commands/definitions.js +77 -25
- package/dist/src/extensions/deployment-registration.js +6 -4
- package/dist/src/features/catalog.js +26 -0
- package/dist/src/features/cli.js +1 -3
- package/dist/src/features/runtime.js +17 -1
- package/dist/src/issues/cli.js +91 -7
- package/dist/src/mcp/server.mjs +1 -1
- package/dist/src/ops/registry.js +2 -2
- package/dist/src/policy/authorization.js +2 -2
- package/dist/src/providers/capability-matrix.yaml +3 -3
- package/dist/src/providers/provider-definitions.js +7 -5
- package/dist/src/providers/provider-definitions.mjs +1 -1
- package/dist/src/serve/pty-bridge.js +2 -8
- package/dist/src/serve/screen-reader.js +3 -6
- package/dist/src/smiths/context-pipeline/aiwg-md.js +2 -2
- package/dist/src/smiths/context-pipeline/finalization.js +18 -5
- package/dist/src/smiths/context-pipeline/generator.js +2 -2
- package/dist/src/smiths/context-pipeline/workspace-context.js +16 -17
- package/package.json +2 -1
- package/tools/agents/deploy-agents.mjs +10 -11
- package/tools/agents/providers/base.mjs +47 -5
- package/tools/agents/providers/openclaw.mjs +5 -2
- package/tools/agents/providers/windsurf.mjs +13 -24
- package/tools/skills/deploy-skills-codex.mjs +21 -5
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Devin Desktop Provider (Windsurf compatibility adapter)
|
|
3
3
|
*
|
|
4
|
-
* Deploys agents to
|
|
4
|
+
* Deploys agents to the Devin Desktop/Windsurf compatibility surface with
|
|
5
|
+
* aggregated AGENTS.md and trigger-frontmatter rules. The provider id and
|
|
6
|
+
* generated `.windsurf/` paths remain stable for backward compatibility.
|
|
5
7
|
*
|
|
6
8
|
* Deployment paths:
|
|
7
9
|
* - Output: AGENTS.md (aggregated agents)
|
|
@@ -18,7 +20,7 @@
|
|
|
18
20
|
* - Capabilities tags for tools
|
|
19
21
|
* - Workflow format for commands
|
|
20
22
|
* - Conventional skills and rules deployment
|
|
21
|
-
* -
|
|
23
|
+
* - Devin Desktop selectors resolve to the stable `windsurf` provider id
|
|
22
24
|
*/
|
|
23
25
|
|
|
24
26
|
import realFs from 'fs';
|
|
@@ -57,7 +59,7 @@ import {
|
|
|
57
59
|
// ============================================================================
|
|
58
60
|
|
|
59
61
|
export const name = 'windsurf';
|
|
60
|
-
export const aliases = [];
|
|
62
|
+
export const aliases = ['devin', 'devin-desktop', 'devin-local', 'cascade'];
|
|
61
63
|
|
|
62
64
|
export const paths = {
|
|
63
65
|
agents: '.windsurf/agents/', // Discrete mirrors alongside AGENTS.md
|
|
@@ -85,17 +87,6 @@ export const capabilities = {
|
|
|
85
87
|
yamlFormat: false
|
|
86
88
|
};
|
|
87
89
|
|
|
88
|
-
// ============================================================================
|
|
89
|
-
// Warning Display
|
|
90
|
-
// ============================================================================
|
|
91
|
-
|
|
92
|
-
function displayWarning() {
|
|
93
|
-
console.log('\n' + '='.repeat(70));
|
|
94
|
-
console.log('[EXPERIMENTAL] Windsurf provider support is experimental and untested.');
|
|
95
|
-
console.log('Please report issues: https://github.com/jmagly/aiwg/issues');
|
|
96
|
-
console.log('='.repeat(70) + '\n');
|
|
97
|
-
}
|
|
98
|
-
|
|
99
90
|
// ============================================================================
|
|
100
91
|
// Content Transformation
|
|
101
92
|
// ============================================================================
|
|
@@ -253,12 +244,12 @@ export function generateAgentsMd(files, destPath, opts) {
|
|
|
253
244
|
// refuses to replace the legacy 2MB+ aggregate writer's output.
|
|
254
245
|
lines.push('<!-- aiwg-managed -->');
|
|
255
246
|
lines.push('');
|
|
256
|
-
lines.push('> AIWG Agent Directory for
|
|
247
|
+
lines.push('> AIWG Agent Directory for Devin Desktop');
|
|
257
248
|
lines.push('');
|
|
258
249
|
lines.push('<!--');
|
|
259
|
-
lines.push('
|
|
260
|
-
lines.push('
|
|
261
|
-
lines.push(' See: https://docs.
|
|
250
|
+
lines.push(' Generated by AIWG for Devin Desktop using the Windsurf compatibility adapter.');
|
|
251
|
+
lines.push(' Devin Desktop reads this file for directory-scoped AI instructions.');
|
|
252
|
+
lines.push(' See: https://docs.devin.ai/onboard-devin/agents-md');
|
|
262
253
|
lines.push('-->');
|
|
263
254
|
lines.push('');
|
|
264
255
|
lines.push('## Table of Contents');
|
|
@@ -316,10 +307,10 @@ export function generateWindsurfRules(srcRoot, target, opts) {
|
|
|
316
307
|
lines.push('trigger: always_on');
|
|
317
308
|
lines.push('---');
|
|
318
309
|
lines.push('');
|
|
319
|
-
lines.push('# AIWG Orchestration for
|
|
310
|
+
lines.push('# AIWG Orchestration for Devin Desktop');
|
|
320
311
|
lines.push('');
|
|
321
312
|
lines.push('<!--');
|
|
322
|
-
lines.push('
|
|
313
|
+
lines.push(' Generated by AIWG for Devin Desktop using the Windsurf compatibility adapter.');
|
|
323
314
|
lines.push(' This file provides orchestration context for AIWG SDLC workflows.');
|
|
324
315
|
lines.push(' trigger: always_on — included in system prompt on every message.');
|
|
325
316
|
lines.push('-->');
|
|
@@ -556,9 +547,7 @@ export async function deploy(opts) {
|
|
|
556
547
|
dryRun
|
|
557
548
|
} = opts;
|
|
558
549
|
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
console.log(`\n=== Windsurf Provider (EXPERIMENTAL) ===`);
|
|
550
|
+
console.log(`\n=== Devin Desktop Provider (windsurf compatibility adapter) ===`);
|
|
562
551
|
console.log(`Target: ${target}`);
|
|
563
552
|
console.log(`Mode: ${mode}`);
|
|
564
553
|
const normalizedMode = normalizeDeploymentMode(mode);
|
|
@@ -417,6 +417,17 @@ function isFullAiwgSourceRoot(srcRoot) {
|
|
|
417
417
|
const repoRoot = path.resolve(scriptDir, '..', '..');
|
|
418
418
|
const srcRoot = source || repoRoot;
|
|
419
419
|
const fullAiwgSourceRoot = isFullAiwgSourceRoot(srcRoot);
|
|
420
|
+
const copyStandardSkills = cfg.copyStandardSkills === true;
|
|
421
|
+
// Component-scoped deploys (the way `aiwg use all` installs selected
|
|
422
|
+
// frameworks/addons) still need a complete inventory for stale-skill
|
|
423
|
+
// reconciliation. AIWG_ROOT is supplied by the orchestrator for exactly
|
|
424
|
+
// this purpose; fall back to the script checkout for standalone use.
|
|
425
|
+
const configuredAiwgRoot = process.env.AIWG_ROOT
|
|
426
|
+
? path.resolve(process.env.AIWG_ROOT)
|
|
427
|
+
: repoRoot;
|
|
428
|
+
const inventoryRoot = fullAiwgSourceRoot
|
|
429
|
+
? srcRoot
|
|
430
|
+
: (!copyStandardSkills && isFullAiwgSourceRoot(configuredAiwgRoot) ? configuredAiwgRoot : null);
|
|
420
431
|
|
|
421
432
|
console.log(`Deploying skills to Codex`);
|
|
422
433
|
console.log(` Source: ${srcRoot}`);
|
|
@@ -440,8 +451,6 @@ function isFullAiwgSourceRoot(srcRoot) {
|
|
|
440
451
|
// Codex normally deploys to the project `.agents/skills/` target, so the
|
|
441
452
|
// kernel/standard split is enforced at filter time rather than via separate
|
|
442
453
|
// destination directories. The standalone legacy default remains supported.
|
|
443
|
-
const copyStandardSkills = cfg.copyStandardSkills === true;
|
|
444
|
-
|
|
445
454
|
// Track every AIWG-managed source skill name so we can scope post-deploy
|
|
446
455
|
// cleanup to skills AIWG ships — never delete user-authored or
|
|
447
456
|
// third-party skills sitting alongside.
|
|
@@ -457,10 +466,13 @@ function isFullAiwgSourceRoot(srcRoot) {
|
|
|
457
466
|
// so full-root cleanup can remove stale AIWG skills. Component-scoped
|
|
458
467
|
// cleanup is limited below to names owned by that component, preserving
|
|
459
468
|
// user-authored skills alongside the generated set.
|
|
460
|
-
for (const { dir } of getSkillDirectories(srcRoot, 'all')) {
|
|
469
|
+
for (const { dir } of getSkillDirectories(inventoryRoot || srcRoot, 'all')) {
|
|
461
470
|
const allSkills = findSkillDirs(dir);
|
|
462
471
|
for (const s of allSkills) {
|
|
463
472
|
allManagedNames.add(path.basename(s));
|
|
473
|
+
if (!copyStandardSkills && isKernelSkill(s)) {
|
|
474
|
+
desiredNames.add(path.basename(s));
|
|
475
|
+
}
|
|
464
476
|
// Also record the frontmatter `name:` since Codex uses that as the
|
|
465
477
|
// target dir. Best-effort — ignore parse errors.
|
|
466
478
|
try {
|
|
@@ -469,7 +481,11 @@ function isFullAiwgSourceRoot(srcRoot) {
|
|
|
469
481
|
if (fmMatch) {
|
|
470
482
|
const nameMatch = fmMatch[1].match(/^\s*name:\s*(.+?)\s*$/m);
|
|
471
483
|
if (nameMatch) {
|
|
472
|
-
|
|
484
|
+
const deployedName = stripWrappingQuotes(nameMatch[1]);
|
|
485
|
+
allManagedNames.add(deployedName);
|
|
486
|
+
if (!copyStandardSkills && isKernelSkill(s)) {
|
|
487
|
+
desiredNames.add(deployedName);
|
|
488
|
+
}
|
|
473
489
|
}
|
|
474
490
|
}
|
|
475
491
|
} catch { /* ignore */ }
|
|
@@ -528,7 +544,7 @@ function isFullAiwgSourceRoot(srcRoot) {
|
|
|
528
544
|
// the .aiwg-managed marker. Treat only the exact historical names as
|
|
529
545
|
// managed so malformed legacy frontmatter cannot survive an upgrade.
|
|
530
546
|
let isAiwgManaged = allManagedNames.has(name) || LEGACY_RENAMED_SKILLS.has(name);
|
|
531
|
-
if (!isAiwgManaged && fullAiwgSourceRoot) {
|
|
547
|
+
if (!isAiwgManaged && (fullAiwgSourceRoot || inventoryRoot)) {
|
|
532
548
|
// Check for the .aiwg-managed marker file (preferred — survives
|
|
533
549
|
// frontmatter transforms) or fall back to namespace check.
|
|
534
550
|
const markerFile = path.join(target, name, '.aiwg-managed');
|