@massa-ai/opencode-plugin 1.54.1 → 1.56.0
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/agent-profiles/balanced/massa-ai-architecture-specialist.md +1 -1
- package/agent-profiles/balanced/massa-ai-audit-specialist.md +1 -1
- package/agent-profiles/balanced/massa-ai-builder.md +1 -1
- package/agent-profiles/balanced/massa-ai-context-curator.md +1 -1
- package/agent-profiles/balanced/massa-ai-designer.md +1 -1
- package/agent-profiles/balanced/massa-ai-documentation-agent.md +1 -1
- package/agent-profiles/balanced/massa-ai-furps-analyst.md +1 -1
- package/agent-profiles/balanced/massa-ai-investigator.md +1 -1
- package/agent-profiles/balanced/massa-ai-judge.md +1 -1
- package/agent-profiles/balanced/massa-ai-meta-judge.md +1 -1
- package/agent-profiles/balanced/massa-ai-mobile-specialist.md +1 -1
- package/agent-profiles/balanced/massa-ai-navigator.md +1 -1
- package/agent-profiles/balanced/massa-ai-plan-critic.md +1 -1
- package/agent-profiles/balanced/massa-ai-planner.md +1 -1
- package/agent-profiles/balanced/massa-ai-requirements-analyst.md +1 -1
- package/agent-profiles/balanced/massa-ai-reviewer.md +1 -1
- package/agent-profiles/balanced/massa-ai-test-engineer.md +1 -1
- package/agent-profiles/balanced/massa-ai-verification-agent.md +1 -1
- package/agent-profiles/cheap/massa-ai-architecture-specialist.md +1 -1
- package/agent-profiles/cheap/massa-ai-audit-specialist.md +1 -1
- package/agent-profiles/cheap/massa-ai-builder.md +1 -1
- package/agent-profiles/cheap/massa-ai-context-curator.md +1 -1
- package/agent-profiles/cheap/massa-ai-designer.md +1 -1
- package/agent-profiles/cheap/massa-ai-documentation-agent.md +1 -1
- package/agent-profiles/cheap/massa-ai-furps-analyst.md +1 -1
- package/agent-profiles/cheap/massa-ai-investigator.md +1 -1
- package/agent-profiles/cheap/massa-ai-judge.md +1 -1
- package/agent-profiles/cheap/massa-ai-meta-judge.md +1 -1
- package/agent-profiles/cheap/massa-ai-mobile-specialist.md +1 -1
- package/agent-profiles/cheap/massa-ai-navigator.md +1 -1
- package/agent-profiles/cheap/massa-ai-plan-critic.md +1 -1
- package/agent-profiles/cheap/massa-ai-planner.md +1 -1
- package/agent-profiles/cheap/massa-ai-requirements-analyst.md +1 -1
- package/agent-profiles/cheap/massa-ai-reviewer.md +1 -1
- package/agent-profiles/cheap/massa-ai-test-engineer.md +1 -1
- package/agent-profiles/cheap/massa-ai-verification-agent.md +1 -1
- package/agent-profiles/heavy/massa-ai-architecture-specialist.md +1 -1
- package/agent-profiles/heavy/massa-ai-audit-specialist.md +1 -1
- package/agent-profiles/heavy/massa-ai-builder.md +1 -1
- package/agent-profiles/heavy/massa-ai-context-curator.md +1 -1
- package/agent-profiles/heavy/massa-ai-designer.md +1 -1
- package/agent-profiles/heavy/massa-ai-documentation-agent.md +1 -1
- package/agent-profiles/heavy/massa-ai-furps-analyst.md +1 -1
- package/agent-profiles/heavy/massa-ai-investigator.md +1 -1
- package/agent-profiles/heavy/massa-ai-judge.md +1 -1
- package/agent-profiles/heavy/massa-ai-meta-judge.md +1 -1
- package/agent-profiles/heavy/massa-ai-mobile-specialist.md +1 -1
- package/agent-profiles/heavy/massa-ai-navigator.md +1 -1
- package/agent-profiles/heavy/massa-ai-plan-critic.md +1 -1
- package/agent-profiles/heavy/massa-ai-planner.md +1 -1
- package/agent-profiles/heavy/massa-ai-requirements-analyst.md +1 -1
- package/agent-profiles/heavy/massa-ai-reviewer.md +1 -1
- package/agent-profiles/heavy/massa-ai-test-engineer.md +1 -1
- package/agent-profiles/heavy/massa-ai-verification-agent.md +1 -1
- package/agent-profiles/home/massa-ai-architecture-specialist.md +1 -1
- package/agent-profiles/home/massa-ai-audit-specialist.md +1 -1
- package/agent-profiles/home/massa-ai-builder.md +1 -1
- package/agent-profiles/home/massa-ai-context-curator.md +1 -1
- package/agent-profiles/home/massa-ai-designer.md +1 -1
- package/agent-profiles/home/massa-ai-documentation-agent.md +1 -1
- package/agent-profiles/home/massa-ai-furps-analyst.md +1 -1
- package/agent-profiles/home/massa-ai-investigator.md +1 -1
- package/agent-profiles/home/massa-ai-judge.md +1 -1
- package/agent-profiles/home/massa-ai-meta-judge.md +1 -1
- package/agent-profiles/home/massa-ai-mobile-specialist.md +1 -1
- package/agent-profiles/home/massa-ai-navigator.md +1 -1
- package/agent-profiles/home/massa-ai-plan-critic.md +1 -1
- package/agent-profiles/home/massa-ai-planner.md +1 -1
- package/agent-profiles/home/massa-ai-requirements-analyst.md +1 -1
- package/agent-profiles/home/massa-ai-reviewer.md +1 -1
- package/agent-profiles/home/massa-ai-test-engineer.md +1 -1
- package/agent-profiles/home/massa-ai-verification-agent.md +1 -1
- package/agent-profiles/local_models/massa-ai-architecture-specialist.md +1 -1
- package/agent-profiles/local_models/massa-ai-audit-specialist.md +1 -1
- package/agent-profiles/local_models/massa-ai-builder.md +1 -1
- package/agent-profiles/local_models/massa-ai-context-curator.md +1 -1
- package/agent-profiles/local_models/massa-ai-designer.md +1 -1
- package/agent-profiles/local_models/massa-ai-documentation-agent.md +1 -1
- package/agent-profiles/local_models/massa-ai-furps-analyst.md +1 -1
- package/agent-profiles/local_models/massa-ai-investigator.md +1 -1
- package/agent-profiles/local_models/massa-ai-judge.md +1 -1
- package/agent-profiles/local_models/massa-ai-meta-judge.md +1 -1
- package/agent-profiles/local_models/massa-ai-mobile-specialist.md +1 -1
- package/agent-profiles/local_models/massa-ai-navigator.md +1 -1
- package/agent-profiles/local_models/massa-ai-plan-critic.md +1 -1
- package/agent-profiles/local_models/massa-ai-planner.md +1 -1
- package/agent-profiles/local_models/massa-ai-requirements-analyst.md +1 -1
- package/agent-profiles/local_models/massa-ai-reviewer.md +1 -1
- package/agent-profiles/local_models/massa-ai-test-engineer.md +1 -1
- package/agent-profiles/local_models/massa-ai-verification-agent.md +1 -1
- package/agent-profiles/open_models/massa-ai-architecture-specialist.md +1 -1
- package/agent-profiles/open_models/massa-ai-audit-specialist.md +1 -1
- package/agent-profiles/open_models/massa-ai-builder.md +1 -1
- package/agent-profiles/open_models/massa-ai-context-curator.md +1 -1
- package/agent-profiles/open_models/massa-ai-designer.md +1 -1
- package/agent-profiles/open_models/massa-ai-documentation-agent.md +1 -1
- package/agent-profiles/open_models/massa-ai-furps-analyst.md +1 -1
- package/agent-profiles/open_models/massa-ai-investigator.md +1 -1
- package/agent-profiles/open_models/massa-ai-judge.md +1 -1
- package/agent-profiles/open_models/massa-ai-meta-judge.md +1 -1
- package/agent-profiles/open_models/massa-ai-mobile-specialist.md +1 -1
- package/agent-profiles/open_models/massa-ai-navigator.md +1 -1
- package/agent-profiles/open_models/massa-ai-plan-critic.md +1 -1
- package/agent-profiles/open_models/massa-ai-planner.md +1 -1
- package/agent-profiles/open_models/massa-ai-requirements-analyst.md +1 -1
- package/agent-profiles/open_models/massa-ai-reviewer.md +1 -1
- package/agent-profiles/open_models/massa-ai-test-engineer.md +1 -1
- package/agent-profiles/open_models/massa-ai-verification-agent.md +1 -1
- package/agent-profiles/work/massa-ai-architecture-specialist.md +1 -1
- package/agent-profiles/work/massa-ai-audit-specialist.md +1 -1
- package/agent-profiles/work/massa-ai-builder.md +1 -1
- package/agent-profiles/work/massa-ai-context-curator.md +1 -1
- package/agent-profiles/work/massa-ai-designer.md +1 -1
- package/agent-profiles/work/massa-ai-documentation-agent.md +1 -1
- package/agent-profiles/work/massa-ai-furps-analyst.md +1 -1
- package/agent-profiles/work/massa-ai-investigator.md +1 -1
- package/agent-profiles/work/massa-ai-judge.md +1 -1
- package/agent-profiles/work/massa-ai-meta-judge.md +1 -1
- package/agent-profiles/work/massa-ai-mobile-specialist.md +1 -1
- package/agent-profiles/work/massa-ai-navigator.md +1 -1
- package/agent-profiles/work/massa-ai-plan-critic.md +1 -1
- package/agent-profiles/work/massa-ai-planner.md +1 -1
- package/agent-profiles/work/massa-ai-requirements-analyst.md +1 -1
- package/agent-profiles/work/massa-ai-reviewer.md +1 -1
- package/agent-profiles/work/massa-ai-test-engineer.md +1 -1
- package/agent-profiles/work/massa-ai-verification-agent.md +1 -1
- package/agents/massa-ai-architecture-specialist.md +1 -1
- package/agents/massa-ai-audit-specialist.md +1 -1
- package/agents/massa-ai-builder.md +1 -1
- package/agents/massa-ai-context-curator.md +1 -1
- package/agents/massa-ai-designer.md +1 -1
- package/agents/massa-ai-documentation-agent.md +1 -1
- package/agents/massa-ai-furps-analyst.md +1 -1
- package/agents/massa-ai-investigator.md +1 -1
- package/agents/massa-ai-judge.md +1 -1
- package/agents/massa-ai-meta-judge.md +1 -1
- package/agents/massa-ai-mobile-specialist.md +1 -1
- package/agents/massa-ai-navigator.md +1 -1
- package/agents/massa-ai-plan-critic.md +1 -1
- package/agents/massa-ai-planner.md +1 -1
- package/agents/massa-ai-requirements-analyst.md +1 -1
- package/agents/massa-ai-reviewer.md +1 -1
- package/agents/massa-ai-test-engineer.md +1 -1
- package/agents/massa-ai-verification-agent.md +1 -1
- package/dist/config-cli.js +734 -17
- package/dist/index.js +82 -3
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -600,15 +600,18 @@ var init_massa_ai_config = __esm(() => {
|
|
|
600
600
|
security: {
|
|
601
601
|
corsOrigins: []
|
|
602
602
|
},
|
|
603
|
-
scheduler: DEFAULT_SCHEDULER_CONFIG
|
|
603
|
+
scheduler: DEFAULT_SCHEDULER_CONFIG,
|
|
604
|
+
bootstrap: { rules: {} }
|
|
604
605
|
};
|
|
605
606
|
});
|
|
606
607
|
|
|
607
608
|
// ../../packages/shared/dist/config/config-loader.js
|
|
608
609
|
var exports_config_loader = {};
|
|
609
610
|
__export(exports_config_loader, {
|
|
611
|
+
writeRawConfig: () => writeRawConfig,
|
|
610
612
|
writeFileAtomically: () => writeFileAtomically,
|
|
611
613
|
saveConfig: () => saveConfig,
|
|
614
|
+
readRawConfigStrict: () => readRawConfigStrict,
|
|
612
615
|
migrateDataDirOnce: () => migrateDataDirOnce,
|
|
613
616
|
mergeSchedulerSection: () => mergeSchedulerSection,
|
|
614
617
|
loadRawUserConfig: () => loadRawUserConfig,
|
|
@@ -619,12 +622,23 @@ __export(exports_config_loader, {
|
|
|
619
622
|
getConfigForEnv: () => getConfigForEnv,
|
|
620
623
|
getConfigDir: () => getConfigDir,
|
|
621
624
|
configExists: () => configExists,
|
|
622
|
-
__resetMigrationForTests: () => __resetMigrationForTests
|
|
625
|
+
__resetMigrationForTests: () => __resetMigrationForTests,
|
|
626
|
+
ConfigWriteConflictError: () => ConfigWriteConflictError,
|
|
627
|
+
ConfigParseError: () => ConfigParseError
|
|
623
628
|
});
|
|
624
629
|
import fs from "fs";
|
|
625
630
|
import path3 from "path";
|
|
626
631
|
import os2 from "os";
|
|
627
632
|
import crypto from "crypto";
|
|
633
|
+
function readConfigFileOrEmpty() {
|
|
634
|
+
try {
|
|
635
|
+
return fs.readFileSync(CONFIG_FILE, "utf-8");
|
|
636
|
+
} catch (error) {
|
|
637
|
+
if (error?.code === "ENOENT")
|
|
638
|
+
return "";
|
|
639
|
+
throw error;
|
|
640
|
+
}
|
|
641
|
+
}
|
|
628
642
|
function getConfigDir() {
|
|
629
643
|
return CONFIG_DIR;
|
|
630
644
|
}
|
|
@@ -691,6 +705,21 @@ function loadRawUserConfig() {
|
|
|
691
705
|
return {};
|
|
692
706
|
}
|
|
693
707
|
}
|
|
708
|
+
function readRawConfigStrict() {
|
|
709
|
+
const raw = readConfigFileOrEmpty();
|
|
710
|
+
if (raw === "")
|
|
711
|
+
return {};
|
|
712
|
+
let parsed;
|
|
713
|
+
try {
|
|
714
|
+
parsed = JSON.parse(raw);
|
|
715
|
+
} catch (error) {
|
|
716
|
+
throw new ConfigParseError(CONFIG_FILE, error);
|
|
717
|
+
}
|
|
718
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
719
|
+
throw new ConfigParseError(CONFIG_FILE, new Error("parsed value is not a JSON object"));
|
|
720
|
+
}
|
|
721
|
+
return parsed;
|
|
722
|
+
}
|
|
694
723
|
function loadConfigSafe() {
|
|
695
724
|
try {
|
|
696
725
|
return loadConfig();
|
|
@@ -745,6 +774,43 @@ function writeFileAtomically(targetPath, content) {
|
|
|
745
774
|
function saveConfig(config) {
|
|
746
775
|
writeFileAtomically(CONFIG_FILE, JSON.stringify(config, null, 2));
|
|
747
776
|
}
|
|
777
|
+
function writeRawConfig(doc, opts) {
|
|
778
|
+
const onDiskAtStart = readConfigFileOrEmpty();
|
|
779
|
+
if (onDiskAtStart === opts.expectedBytes) {
|
|
780
|
+
writeFileAtomically(CONFIG_FILE, JSON.stringify(doc, null, 2));
|
|
781
|
+
return;
|
|
782
|
+
}
|
|
783
|
+
let original;
|
|
784
|
+
let current;
|
|
785
|
+
try {
|
|
786
|
+
original = opts.expectedBytes === "" ? {} : JSON.parse(opts.expectedBytes);
|
|
787
|
+
} catch (error) {
|
|
788
|
+
throw new ConfigParseError(`${CONFIG_FILE} (caller-supplied expectedBytes)`, error);
|
|
789
|
+
}
|
|
790
|
+
try {
|
|
791
|
+
current = onDiskAtStart === "" ? {} : JSON.parse(onDiskAtStart);
|
|
792
|
+
} catch (error) {
|
|
793
|
+
throw new ConfigParseError(CONFIG_FILE, error);
|
|
794
|
+
}
|
|
795
|
+
const reapplied = { ...current };
|
|
796
|
+
const touchedKeys = new Set([...Object.keys(original), ...Object.keys(doc)]);
|
|
797
|
+
for (const key of touchedKeys) {
|
|
798
|
+
const before = JSON.stringify(original[key]);
|
|
799
|
+
const after = JSON.stringify(doc[key]);
|
|
800
|
+
if (before === after)
|
|
801
|
+
continue;
|
|
802
|
+
if (Object.prototype.hasOwnProperty.call(doc, key)) {
|
|
803
|
+
reapplied[key] = doc[key];
|
|
804
|
+
} else {
|
|
805
|
+
delete reapplied[key];
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
const onDiskImmediatelyBeforeWrite = readConfigFileOrEmpty();
|
|
809
|
+
if (onDiskImmediatelyBeforeWrite !== onDiskAtStart) {
|
|
810
|
+
throw new ConfigWriteConflictError(CONFIG_FILE);
|
|
811
|
+
}
|
|
812
|
+
writeFileAtomically(CONFIG_FILE, JSON.stringify(reapplied, null, 2));
|
|
813
|
+
}
|
|
748
814
|
function initConfig() {
|
|
749
815
|
if (!fs.existsSync(CONFIG_FILE)) {
|
|
750
816
|
saveConfig(defaultMassaAiConfig);
|
|
@@ -771,12 +837,25 @@ function getConfigForEnv() {
|
|
|
771
837
|
env.ENABLE_METRICS = String(config.logging.enableMetrics);
|
|
772
838
|
return env;
|
|
773
839
|
}
|
|
774
|
-
var CONFIG_DIR, CONFIG_FILE, migrationAttempted = false, tempFileCounter = 0;
|
|
840
|
+
var CONFIG_DIR, CONFIG_FILE, ConfigParseError, ConfigWriteConflictError, migrationAttempted = false, tempFileCounter = 0;
|
|
775
841
|
var init_config_loader = __esm(() => {
|
|
776
842
|
init_massa_ai_config();
|
|
777
843
|
init_xdg();
|
|
778
844
|
CONFIG_DIR = configDir("massa-ai");
|
|
779
845
|
CONFIG_FILE = path3.join(CONFIG_DIR, "config.json");
|
|
846
|
+
ConfigParseError = class ConfigParseError extends Error {
|
|
847
|
+
constructor(filePath, cause) {
|
|
848
|
+
const reason = cause instanceof Error ? cause.message : String(cause);
|
|
849
|
+
super(`Failed to parse ${filePath}: ${reason}`);
|
|
850
|
+
this.name = "ConfigParseError";
|
|
851
|
+
}
|
|
852
|
+
};
|
|
853
|
+
ConfigWriteConflictError = class ConfigWriteConflictError extends Error {
|
|
854
|
+
constructor(filePath) {
|
|
855
|
+
super(`${filePath} changed on disk twice while writing \u2014 refusing to overwrite a ` + `concurrent update. Re-read the file and retry.`);
|
|
856
|
+
this.name = "ConfigWriteConflictError";
|
|
857
|
+
}
|
|
858
|
+
};
|
|
780
859
|
});
|
|
781
860
|
|
|
782
861
|
// ../../packages/shared/dist/env.js
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@massa-ai/opencode-plugin",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.56.0",
|
|
4
4
|
"description": "massa-ai plugin for OpenCode - Semantic code search, memory, and context compression",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@opencode-ai/plugin": "^1.2.15",
|
|
26
26
|
"@opencode-ai/sdk": "^1.2.15",
|
|
27
|
-
"@massa-ai/core": "^1.
|
|
28
|
-
"@massa-ai/shared": "^1.
|
|
27
|
+
"@massa-ai/core": "^1.56.0",
|
|
28
|
+
"@massa-ai/shared": "^1.56.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node": "^22.10.5",
|