strray-ai 1.7.0 → 1.7.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.
Files changed (120) hide show
  1. package/.opencode/enforcer-config.json +2 -2
  2. package/.opencode/package.json +1 -1
  3. package/.opencode/strray/codex.json +1 -1
  4. package/.opencode/strray/config.json +1 -1
  5. package/.opencode/strray/features.json +1 -1
  6. package/dist/core/boot-orchestrator.js +1 -1
  7. package/dist/core/boot-orchestrator.js.map +1 -1
  8. package/dist/core/features-config.js +1 -1
  9. package/dist/core/features-config.js.map +1 -1
  10. package/dist/delegation/task-skill-router.d.ts.map +1 -1
  11. package/dist/delegation/task-skill-router.js +110 -21
  12. package/dist/delegation/task-skill-router.js.map +1 -1
  13. package/dist/mcps/architect-tools.server.js +1 -1
  14. package/dist/mcps/architect-tools.server.js.map +1 -1
  15. package/dist/mcps/auto-format.server.js +1 -1
  16. package/dist/mcps/auto-format.server.js.map +1 -1
  17. package/dist/mcps/boot-orchestrator.server.js +1 -1
  18. package/dist/mcps/boot-orchestrator.server.js.map +1 -1
  19. package/dist/mcps/enforcer-tools.server.js +1 -1
  20. package/dist/mcps/enforcer-tools.server.js.map +1 -1
  21. package/dist/mcps/framework-compliance-audit.server.js +1 -1
  22. package/dist/mcps/framework-compliance-audit.server.js.map +1 -1
  23. package/dist/mcps/framework-help.server.js +1 -1
  24. package/dist/mcps/framework-help.server.js.map +1 -1
  25. package/dist/mcps/knowledge-skills/api-design.server.js +1 -1
  26. package/dist/mcps/knowledge-skills/api-design.server.js.map +1 -1
  27. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +1 -1
  28. package/dist/mcps/knowledge-skills/architecture-patterns.server.js.map +1 -1
  29. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +1 -1
  30. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js.map +1 -1
  31. package/dist/mcps/knowledge-skills/code-analyzer.server.js +1 -1
  32. package/dist/mcps/knowledge-skills/code-analyzer.server.js.map +1 -1
  33. package/dist/mcps/knowledge-skills/code-review.server.js +1 -1
  34. package/dist/mcps/knowledge-skills/code-review.server.js.map +1 -1
  35. package/dist/mcps/knowledge-skills/content-creator.server.js +1 -1
  36. package/dist/mcps/knowledge-skills/content-creator.server.js.map +1 -1
  37. package/dist/mcps/knowledge-skills/database-design.server.js +1 -1
  38. package/dist/mcps/knowledge-skills/database-design.server.js.map +1 -1
  39. package/dist/mcps/knowledge-skills/devops-deployment.server.js +1 -1
  40. package/dist/mcps/knowledge-skills/devops-deployment.server.js.map +1 -1
  41. package/dist/mcps/knowledge-skills/git-workflow.server.js +1 -1
  42. package/dist/mcps/knowledge-skills/git-workflow.server.js.map +1 -1
  43. package/dist/mcps/knowledge-skills/growth-strategist.server.js +1 -1
  44. package/dist/mcps/knowledge-skills/growth-strategist.server.js.map +1 -1
  45. package/dist/mcps/knowledge-skills/log-monitor.server.js +1 -1
  46. package/dist/mcps/knowledge-skills/log-monitor.server.js.map +1 -1
  47. package/dist/mcps/knowledge-skills/mobile-development.server.js +1 -1
  48. package/dist/mcps/knowledge-skills/mobile-development.server.js.map +1 -1
  49. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1 -1
  50. package/dist/mcps/knowledge-skills/multimodal-looker.server.js.map +1 -1
  51. package/dist/mcps/knowledge-skills/performance-optimization.server.js +1 -1
  52. package/dist/mcps/knowledge-skills/performance-optimization.server.js.map +1 -1
  53. package/dist/mcps/knowledge-skills/project-analysis.server.js +1 -1
  54. package/dist/mcps/knowledge-skills/project-analysis.server.js.map +1 -1
  55. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +1 -1
  56. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js.map +1 -1
  57. package/dist/mcps/knowledge-skills/security-audit.server.js +1 -1
  58. package/dist/mcps/knowledge-skills/security-audit.server.js.map +1 -1
  59. package/dist/mcps/knowledge-skills/seo-consultant.server.js +1 -1
  60. package/dist/mcps/knowledge-skills/seo-consultant.server.js.map +1 -1
  61. package/dist/mcps/knowledge-skills/session-management.server.js +1 -1
  62. package/dist/mcps/knowledge-skills/session-management.server.js.map +1 -1
  63. package/dist/mcps/knowledge-skills/skill-invocation.server.js +1 -1
  64. package/dist/mcps/knowledge-skills/skill-invocation.server.js.map +1 -1
  65. package/dist/mcps/knowledge-skills/strategist.server.js +1 -1
  66. package/dist/mcps/knowledge-skills/strategist.server.js.map +1 -1
  67. package/dist/mcps/knowledge-skills/tech-writer.server.js +2 -2
  68. package/dist/mcps/knowledge-skills/tech-writer.server.js.map +1 -1
  69. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +1 -1
  70. package/dist/mcps/knowledge-skills/testing-best-practices.server.js.map +1 -1
  71. package/dist/mcps/knowledge-skills/testing-strategy.server.js +1 -1
  72. package/dist/mcps/knowledge-skills/testing-strategy.server.js.map +1 -1
  73. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +1 -1
  74. package/dist/mcps/knowledge-skills/ui-ux-design.server.js.map +1 -1
  75. package/dist/mcps/lint.server.js +1 -1
  76. package/dist/mcps/lint.server.js.map +1 -1
  77. package/dist/mcps/mcp-client.js +1 -1
  78. package/dist/mcps/mcp-client.js.map +1 -1
  79. package/dist/mcps/model-health-check.server.js +1 -1
  80. package/dist/mcps/model-health-check.server.js.map +1 -1
  81. package/dist/mcps/orchestrator.server.js +1 -1
  82. package/dist/mcps/orchestrator.server.js.map +1 -1
  83. package/dist/mcps/performance-analysis.server.js +1 -1
  84. package/dist/mcps/performance-analysis.server.js.map +1 -1
  85. package/dist/mcps/processor-pipeline.server.js +1 -1
  86. package/dist/mcps/processor-pipeline.server.js.map +1 -1
  87. package/dist/mcps/researcher.server.js +1 -1
  88. package/dist/mcps/researcher.server.js.map +1 -1
  89. package/dist/mcps/security-scan.server.js +1 -1
  90. package/dist/mcps/security-scan.server.js.map +1 -1
  91. package/dist/mcps/state-manager.server.js +1 -1
  92. package/dist/mcps/state-manager.server.js.map +1 -1
  93. package/dist/orchestrator/universal-registry-bridge.js +1 -1
  94. package/dist/orchestrator/universal-registry-bridge.js.map +1 -1
  95. package/dist/plugins/marketplace/marketplace-service.d.ts +108 -0
  96. package/dist/plugins/marketplace/marketplace-service.d.ts.map +1 -0
  97. package/dist/plugins/marketplace/marketplace-service.js +620 -0
  98. package/dist/plugins/marketplace/marketplace-service.js.map +1 -0
  99. package/dist/plugins/marketplace/marketplace-types.d.ts +468 -0
  100. package/dist/plugins/marketplace/marketplace-types.d.ts.map +1 -0
  101. package/dist/plugins/marketplace/marketplace-types.js +11 -0
  102. package/dist/plugins/marketplace/marketplace-types.js.map +1 -0
  103. package/dist/plugins/plugin-system.d.ts +152 -0
  104. package/dist/plugins/plugin-system.d.ts.map +1 -0
  105. package/dist/plugins/plugin-system.js +419 -0
  106. package/dist/plugins/plugin-system.js.map +1 -0
  107. package/dist/plugins/stringray-codex-injection.d.ts +21 -0
  108. package/dist/plugins/stringray-codex-injection.d.ts.map +1 -0
  109. package/dist/plugins/stringray-codex-injection.js +169 -0
  110. package/dist/plugins/stringray-codex-injection.js.map +1 -0
  111. package/dist/security/secure-authentication-system.d.ts +107 -6
  112. package/dist/security/secure-authentication-system.d.ts.map +1 -1
  113. package/dist/security/secure-authentication-system.js +426 -11
  114. package/dist/security/secure-authentication-system.js.map +1 -1
  115. package/dist/security/security-hardening-system.d.ts +11 -2
  116. package/dist/security/security-hardening-system.d.ts.map +1 -1
  117. package/dist/security/security-hardening-system.js +62 -4
  118. package/dist/security/security-hardening-system.js.map +1 -1
  119. package/package.json +4 -2
  120. package/scripts/node/universal-version-manager.js +3 -3
@@ -0,0 +1,419 @@
1
+ /**
2
+ * Plugin Ecosystem
3
+ *
4
+ * Secure plugin system for third-party agent extensions.
5
+ * Provides sandboxed execution, validation, and lifecycle management.
6
+ *
7
+ * @version 1.0.0
8
+ * @since 2026-01-07
9
+ */
10
+ import { frameworkLogger, generateJobId } from "../core/framework-logger.js";
11
+ export class PluginValidator {
12
+ requiredFields = [
13
+ "id",
14
+ "name",
15
+ "version",
16
+ "description",
17
+ "author",
18
+ "license",
19
+ "engines",
20
+ ];
21
+ securityChecks = [
22
+ "validatePackageName",
23
+ "validateDependencies",
24
+ "validatePermissions",
25
+ "validateCodeSecurity",
26
+ "validateResourceLimits",
27
+ ];
28
+ /**
29
+ * Comprehensive plugin validation
30
+ */
31
+ async validatePlugin(pluginPath) {
32
+ const result = {
33
+ valid: false,
34
+ errors: [],
35
+ warnings: [],
36
+ securityIssues: [],
37
+ compatibilityScore: 0,
38
+ };
39
+ try {
40
+ const packageJson = await this.loadPackageJson(pluginPath);
41
+ const metadataValidation = this.validateMetadata(packageJson);
42
+ result.errors.push(...metadataValidation.errors);
43
+ result.warnings.push(...metadataValidation.warnings);
44
+ const capabilitiesValidation = this.validateCapabilities(packageJson);
45
+ result.errors.push(...capabilitiesValidation.errors);
46
+ result.warnings.push(...capabilitiesValidation.warnings);
47
+ const securityValidation = await this.validateSecurity(pluginPath, packageJson);
48
+ result.securityIssues.push(...securityValidation.issues);
49
+ result.errors.push(...securityValidation.errors);
50
+ result.compatibilityScore = this.calculateCompatibilityScore(packageJson);
51
+ result.valid =
52
+ result.errors.length === 0 && result.securityIssues.length === 0;
53
+ }
54
+ catch (error) {
55
+ result.errors.push(`Validation failed: ${error}`);
56
+ }
57
+ return result;
58
+ }
59
+ async loadPackageJson(pluginPath) {
60
+ const fs = require("fs").promises;
61
+ const path = require("path");
62
+ const packagePath = path.join(pluginPath, "package.json");
63
+ const content = await fs.readFile(packagePath, "utf-8");
64
+ return JSON.parse(content);
65
+ }
66
+ validateMetadata(packageJson) {
67
+ const errors = [];
68
+ const warnings = [];
69
+ for (const field of this.requiredFields) {
70
+ if (!packageJson[field]) {
71
+ errors.push(`Missing required field: ${field}`);
72
+ }
73
+ }
74
+ if (packageJson.version && !/^\d+\.\d+\.\d+/.test(packageJson.version)) {
75
+ errors.push("Invalid version format (expected semver)");
76
+ }
77
+ if (!packageJson.engines?.strray) {
78
+ errors.push("Missing StringRay engine requirement");
79
+ }
80
+ const suspiciousKeywords = [
81
+ "hack",
82
+ "exploit",
83
+ "malware",
84
+ "virus",
85
+ "trojan",
86
+ ];
87
+ const keywords = packageJson.keywords || [];
88
+ for (const keyword of keywords) {
89
+ if (suspiciousKeywords.some((s) => keyword.toLowerCase().includes(s))) {
90
+ warnings.push(`Suspicious keyword detected: ${keyword}`);
91
+ }
92
+ }
93
+ return { errors, warnings };
94
+ }
95
+ validateCapabilities(packageJson) {
96
+ const errors = [];
97
+ const warnings = [];
98
+ const capabilities = packageJson.stringrayCapabilities;
99
+ if (!capabilities) {
100
+ errors.push("Missing stringrayCapabilities in package.json");
101
+ return { errors, warnings };
102
+ }
103
+ if (!capabilities.agentTypes || !Array.isArray(capabilities.agentTypes)) {
104
+ errors.push("Missing or invalid agentTypes in capabilities");
105
+ }
106
+ if (!capabilities.supportedTasks ||
107
+ !Array.isArray(capabilities.supportedTasks)) {
108
+ errors.push("Missing or invalid supportedTasks in capabilities");
109
+ }
110
+ if (!capabilities.requiredPermissions ||
111
+ !Array.isArray(capabilities.requiredPermissions)) {
112
+ warnings.push("Missing requiredPermissions - assuming minimal permissions");
113
+ }
114
+ return { errors, warnings };
115
+ }
116
+ async validateSecurity(pluginPath, packageJson) {
117
+ const issues = [];
118
+ const errors = [];
119
+ const dangerousDeps = [
120
+ "eval",
121
+ "child_process",
122
+ "fs",
123
+ "net",
124
+ "http",
125
+ "https",
126
+ "crypto",
127
+ "tls",
128
+ "cluster",
129
+ "worker_threads",
130
+ ];
131
+ const allDeps = {
132
+ ...packageJson.dependencies,
133
+ ...packageJson.devDependencies,
134
+ };
135
+ for (const dep of Object.keys(allDeps)) {
136
+ if (dangerousDeps.includes(dep)) {
137
+ issues.push(`Potentially dangerous dependency: ${dep}`);
138
+ }
139
+ }
140
+ const scripts = packageJson.scripts || {};
141
+ for (const [name, script] of Object.entries(scripts)) {
142
+ if (typeof script === "string") {
143
+ if (script.includes("rm -rf") ||
144
+ script.includes("sudo") ||
145
+ script.includes("chmod +x")) {
146
+ issues.push(`Potentially dangerous script: ${name}`);
147
+ }
148
+ }
149
+ }
150
+ const fs = require("fs").promises;
151
+ const path = require("path");
152
+ try {
153
+ const files = await fs.readdir(pluginPath);
154
+ const hasIndex = files.includes("index.js") || files.includes("index.ts");
155
+ if (!hasIndex) {
156
+ errors.push("Plugin must have an index.js or index.ts file");
157
+ }
158
+ for (const file of files) {
159
+ const stat = await fs.stat(path.join(pluginPath, file));
160
+ if (stat.isFile() && stat.mode & parseInt("111", 8)) {
161
+ issues.push(`Executable file detected: ${file}`);
162
+ }
163
+ }
164
+ }
165
+ catch (error) {
166
+ errors.push(`Failed to validate plugin structure: ${error}`);
167
+ }
168
+ return { issues, errors };
169
+ }
170
+ calculateCompatibilityScore(packageJson) {
171
+ let score = 0;
172
+ const strrayEngine = packageJson.engines?.strray;
173
+ if (strrayEngine) {
174
+ if (strrayEngine === "^1.0.0")
175
+ score += 30;
176
+ else if (strrayEngine.startsWith("^1."))
177
+ score += 20;
178
+ else if (strrayEngine.startsWith("~1."))
179
+ score += 15;
180
+ else
181
+ score += 5;
182
+ }
183
+ const nodeEngine = packageJson.engines?.node;
184
+ if (nodeEngine) {
185
+ if (nodeEngine === "^18.0.0" || nodeEngine === ">=18.0.0")
186
+ score += 20;
187
+ else if (nodeEngine.startsWith("^18."))
188
+ score += 15;
189
+ else
190
+ score += 5;
191
+ }
192
+ const keywords = packageJson.keywords || [];
193
+ const relevantKeywords = ["strray", "plugin", "agent", "ai", "framework"];
194
+ const relevantCount = keywords.filter((k) => relevantKeywords.some((r) => k.toLowerCase().includes(r))).length;
195
+ score += Math.min(relevantCount * 5, 25);
196
+ if (packageJson.description)
197
+ score += 10;
198
+ if (packageJson.homepage)
199
+ score += 5;
200
+ if (packageJson.repository)
201
+ score += 5;
202
+ return Math.min(score, 100);
203
+ }
204
+ }
205
+ export class PluginSandbox {
206
+ sandbox = null;
207
+ config;
208
+ constructor(config = {}) {
209
+ this.config = {
210
+ memoryLimit: 50, // 50MB
211
+ timeout: 30000, // 30 seconds
212
+ allowedModules: ["util", "events", "stream", "buffer", "string_decoder"],
213
+ networkAccess: false,
214
+ fileSystemAccess: false,
215
+ environmentVariables: [],
216
+ ...config,
217
+ };
218
+ }
219
+ /**
220
+ * Execute plugin code in sandbox
221
+ */
222
+ async executePlugin(pluginPath, method, ...args) {
223
+ const vm = require("vm");
224
+ const fs = require("fs").promises;
225
+ const path = require("path");
226
+ const pluginCode = await fs.readFile(path.join(pluginPath, "index.js"), "utf-8");
227
+ const context = vm.createContext({
228
+ console: {
229
+ log: async (...args) => await frameworkLogger.log("plugin-system", "-plugin-args-error-args-any-console-error-plugin-a", "error", { message: "[PLUGIN]", ...args }),
230
+ error: (...args) => console.error("[PLUGIN]", ...args),
231
+ warn: (...args) => console.warn("[PLUGIN]", ...args),
232
+ },
233
+ require: this.createRestrictedRequire(),
234
+ process: {
235
+ env: this.filterEnvironmentVariables(),
236
+ version: process.version,
237
+ platform: process.platform,
238
+ },
239
+ Buffer: Buffer,
240
+ setTimeout: setTimeout,
241
+ clearTimeout: clearTimeout,
242
+ setInterval: setInterval,
243
+ clearInterval: clearInterval,
244
+ });
245
+ const script = new vm.Script(pluginCode);
246
+ const pluginInstance = script.runInContext(context);
247
+ return Promise.race([
248
+ pluginInstance[method](...args),
249
+ new Promise((_, reject) => setTimeout(() => reject(new Error("Plugin execution timeout")), this.config.timeout)),
250
+ ]);
251
+ }
252
+ createRestrictedRequire() {
253
+ const Module = require("module");
254
+ const originalRequire = Module.prototype.require;
255
+ return (id) => {
256
+ if (!this.config.allowedModules.includes(id)) {
257
+ throw new Error(`Module '${id}' is not allowed in plugin sandbox`);
258
+ }
259
+ return originalRequire.call(this, id);
260
+ };
261
+ }
262
+ filterEnvironmentVariables() {
263
+ const filtered = {};
264
+ for (const key of this.config.environmentVariables) {
265
+ if (process.env[key]) {
266
+ filtered[key] = process.env[key];
267
+ }
268
+ }
269
+ return filtered;
270
+ }
271
+ }
272
+ export class PluginRegistry {
273
+ plugins = new Map();
274
+ activePlugins = new Set();
275
+ validator;
276
+ sandbox;
277
+ constructor() {
278
+ this.validator = new PluginValidator();
279
+ this.sandbox = new PluginSandbox();
280
+ }
281
+ /**
282
+ * Register a plugin
283
+ */
284
+ async registerPlugin(pluginPath) {
285
+ try {
286
+ const validation = await this.validator.validatePlugin(pluginPath);
287
+ if (!validation.valid) {
288
+ return {
289
+ success: false,
290
+ errors: [...validation.errors, ...validation.securityIssues],
291
+ };
292
+ }
293
+ const pluginInstance = await this.sandbox.executePlugin(pluginPath, "createPlugin");
294
+ this.plugins.set(pluginInstance.metadata.id, pluginInstance);
295
+ const jobId = generateJobId("plugin-system-register");
296
+ frameworkLogger.log("plugin-system", "plugin registered", "success", {
297
+ name: pluginInstance.metadata.name,
298
+ version: pluginInstance.metadata.version,
299
+ }, undefined, jobId);
300
+ return { success: true, errors: [] };
301
+ }
302
+ catch (error) {
303
+ return {
304
+ success: false,
305
+ errors: [`Plugin registration failed: ${error}`],
306
+ };
307
+ }
308
+ }
309
+ /**
310
+ * Activate a plugin
311
+ */
312
+ async activatePlugin(pluginId, config = {}) {
313
+ const plugin = this.plugins.get(pluginId);
314
+ if (!plugin) {
315
+ console.error(`Plugin ${pluginId} not found`);
316
+ return false;
317
+ }
318
+ try {
319
+ await plugin.initialize(config);
320
+ await plugin.activate();
321
+ this.activePlugins.add(pluginId);
322
+ const jobId = generateJobId("plugin-system-activate");
323
+ frameworkLogger.log("plugin-system", "plugin activated", "success", {
324
+ name: plugin.metadata.name,
325
+ }, undefined, jobId);
326
+ return true;
327
+ }
328
+ catch (error) {
329
+ console.error(`❌ Plugin activation failed: ${error}`);
330
+ return false;
331
+ }
332
+ }
333
+ /**
334
+ * Deactivate a plugin
335
+ */
336
+ async deactivatePlugin(pluginId) {
337
+ const plugin = this.plugins.get(pluginId);
338
+ if (!plugin)
339
+ return false;
340
+ try {
341
+ await plugin.deactivate();
342
+ this.activePlugins.delete(pluginId);
343
+ const jobId = generateJobId("plugin-system-deactivate");
344
+ frameworkLogger.log("plugin-system", "plugin deactivated", "success", {
345
+ name: plugin.metadata.name,
346
+ }, undefined, jobId);
347
+ return true;
348
+ }
349
+ catch (error) {
350
+ console.error(`❌ Plugin deactivation failed: ${error}`);
351
+ return false;
352
+ }
353
+ }
354
+ /**
355
+ * Get plugin instance
356
+ */
357
+ getPlugin(pluginId) {
358
+ return this.plugins.get(pluginId) || null;
359
+ }
360
+ /**
361
+ * List all registered plugins
362
+ */
363
+ listPlugins() {
364
+ return Array.from(this.plugins.entries()).map(([id, plugin]) => ({
365
+ id,
366
+ name: plugin.metadata.name,
367
+ version: plugin.metadata.version,
368
+ active: this.activePlugins.has(id),
369
+ }));
370
+ }
371
+ /**
372
+ * Get plugin health status
373
+ */
374
+ async getPluginHealth(pluginId) {
375
+ const plugin = this.plugins.get(pluginId);
376
+ if (!plugin)
377
+ return null;
378
+ try {
379
+ return await plugin.getHealthStatus();
380
+ }
381
+ catch (error) {
382
+ return {
383
+ status: "unhealthy",
384
+ lastCheck: Date.now(),
385
+ uptime: 0,
386
+ errorCount: 1,
387
+ warningCount: 0,
388
+ details: { error: String(error) },
389
+ };
390
+ }
391
+ }
392
+ /**
393
+ * Unregister a plugin
394
+ */
395
+ async unregisterPlugin(pluginId) {
396
+ const plugin = this.plugins.get(pluginId);
397
+ if (!plugin)
398
+ return false;
399
+ if (this.activePlugins.has(pluginId)) {
400
+ await this.deactivatePlugin(pluginId);
401
+ }
402
+ try {
403
+ await plugin.dispose();
404
+ }
405
+ catch (error) {
406
+ console.warn(`Plugin disposal failed: ${error}`);
407
+ }
408
+ this.plugins.delete(pluginId);
409
+ const jobId = generateJobId("plugin-system-unregister");
410
+ frameworkLogger.log("plugin-system", "plugin unregistered", "success", {
411
+ name: plugin.metadata.name,
412
+ }, undefined, jobId);
413
+ return true;
414
+ }
415
+ }
416
+ export const pluginValidator = new PluginValidator();
417
+ export const pluginSandbox = new PluginSandbox();
418
+ export const pluginRegistry = new PluginRegistry();
419
+ //# sourceMappingURL=plugin-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-system.js","sourceRoot":"","sources":["../../src/plugins/plugin-system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * StringRay Plugin for OpenCode
3
+ *
4
+ * Enterprise AI orchestration with systematic error prevention.
5
+ * This plugin provides intelligent agent coordination and codex-based code quality enforcement.
6
+ *
7
+ * @version 1.1.2
8
+ * @author StringRay Framework Team
9
+ */
10
+ export declare function stringrayPlugin(input: any): {
11
+ config: (input: {
12
+ client?: string;
13
+ directory?: string;
14
+ worktree?: string;
15
+ }) => void;
16
+ "experimental.chat.system.transform": (messages: any[], context: any) => any[];
17
+ "tool.execute.before": (tool: string, args: any) => void;
18
+ "tool.execute.after": (tool: string, args: any, result: any) => void;
19
+ };
20
+ export default stringrayPlugin;
21
+ //# sourceMappingURL=stringray-codex-injection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringray-codex-injection.d.ts","sourceRoot":"","sources":["../../src/plugins/stringray-codex-injection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwMH,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG;oBA/LxB;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;qDAYgD,GAAG,EAAE,WAAW,GAAG;kCA8HtC,MAAM,QAAQ,GAAG;iCAYlB,MAAM,QAAQ,GAAG,UAAU,GAAG;EA6D5D;AAGD,eAAe,eAAe,CAAC"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * StringRay Plugin for OpenCode
3
+ *
4
+ * Enterprise AI orchestration with systematic error prevention.
5
+ * This plugin provides intelligent agent coordination and codex-based code quality enforcement.
6
+ *
7
+ * @version 1.1.2
8
+ * @author StringRay Framework Team
9
+ */
10
+ import { frameworkLogger, generateJobId } from "../core/framework-logger.js";
11
+ import { TokenManager } from "../utils/token-manager.js";
12
+ const tokenManager = new TokenManager();
13
+ const pluginHooks = {
14
+ config: (input) => {
15
+ const jobId = generateJobId("codex-injector-init");
16
+ frameworkLogger.log("codex-injector", "plugin initialized", "info", {}, undefined, jobId);
17
+ },
18
+ "experimental.chat.system.transform": (messages, context) => {
19
+ const jobId = generateJobId("codex-injector-transform");
20
+ frameworkLogger.log("codex-injector", "chat.system.transform hook called", "info", { messageCount: messages?.length }, undefined, jobId);
21
+ // Inject codex context into system messages for agent guidance
22
+ try {
23
+ const fullContent = `## StringRay Framework Codex v1.2.25
24
+
25
+ Welcome to StringRay AI! This session includes systematic error prevention and production-ready development guidelines.
26
+
27
+ ### 🚀 Available Framework Capabilities
28
+
29
+ **Agent Commands (use @agent-name):**
30
+ - **@orchestrator** - Multi-agent workflow coordination (accesses all internal agents)
31
+ - **@enforcer** - Codex compliance & error prevention
32
+
33
+ **Internal Agent System:**
34
+ All 8 specialized agents (architect, bug-triage-specialist, code-reviewer, security-auditor, refactorer, testing-lead, researcher) are available internally through orchestrator coordination and framework operations.
35
+
36
+ **Skills System (23 lazy-loaded capabilities):**
37
+ - project-analysis, testing-strategy, code-review, security-audit, performance-optimization
38
+ - refactoring-strategies, ui-ux-design, documentation-generation, and more
39
+
40
+ **Framework Tools:**
41
+ - **framework-reporting-system** - Generate comprehensive activity reports
42
+ - **complexity-analyzer** - Analyze code complexity and delegation decisions
43
+ - **codex-injector** - Apply development standards automatically
44
+
45
+ **Help & Discovery:**
46
+ To discover all available capabilities, use the framework-help system:
47
+ - Get capabilities overview and command examples
48
+ - Access detailed explanations of any framework feature
49
+ - Available through MCP server: framework-help
50
+
51
+ ### Core Principles:
52
+ - **Progressive Prod-Ready Code**: All code must be production-ready from the first commit
53
+ - **No Patches/Boiler/Stubs**: Prohibit temporary patches and incomplete implementations
54
+ - **Surgical Fixes**: Apply precise, targeted fixes with root cause resolution
55
+ - **Type Safety First**: Leverage TypeScript's type system fully
56
+ - **Single Source of Truth**: Maintain authoritative sources for all information
57
+
58
+ ### Development Guidelines:
59
+ - **YAGNI**: Don't implement features not currently needed
60
+ - **DRY**: Don't repeat yourself - extract reusable logic
61
+ - **Separation of Concerns**: Keep UI, business logic, and data layers distinct
62
+ - **Test Coverage >85%**: Maintain comprehensive behavioral test coverage
63
+ - **Performance Budget**: Bundle size <2MB (gzipped <700KB)
64
+
65
+ For complete codex documentation, see: .opencode/strray/codex.json
66
+
67
+ ### 🔒 Critical Spawn Governance (All Agents)
68
+
69
+ **MANDATORY: All agents must follow these spawn governance rules:**
70
+
71
+ - **Maximum 2 subagents total** across all operations within a single agent session
72
+ - **No nested subagent spawning** - subagents cannot spawn their own subagents
73
+ - **Solo agents (researcher)** can spawn 0 subagents - they are terminal agents
74
+ - **Always check spawn authorization** before creating new agents via agentSpawnGovernor
75
+ - **Report spawn attempts** to monitoring system before execution
76
+ - **Terminate gracefully** if spawn limits exceeded - do not attempt workarounds
77
+ - **Single level only** - coordinator agents can spawn workers, but workers cannot spawn more agents
78
+
79
+ **Violation of these rules will result in immediate system shutdown to prevent infinite loops.**`;
80
+ const limitCheck = tokenManager.checkLimits(fullContent);
81
+ let finalContent = fullContent;
82
+ if (!limitCheck.withinLimit) {
83
+ const jobId = generateJobId("codex-injector-token-exceed");
84
+ frameworkLogger.log("codex-injector", "Codex content exceeds token limits, pruning context", "error", {
85
+ currentTokens: limitCheck.currentTokens,
86
+ maxTokens: limitCheck.maxTokens,
87
+ }, undefined, jobId);
88
+ finalContent = tokenManager.pruneContext(fullContent);
89
+ }
90
+ else if (limitCheck.warning) {
91
+ const jobId = generateJobId("codex-injector-token-warning");
92
+ frameworkLogger.log("codex-injector", "Codex content approaching token limits", "info", {
93
+ currentTokens: limitCheck.currentTokens,
94
+ maxTokens: limitCheck.maxTokens,
95
+ }, undefined, jobId);
96
+ }
97
+ // CRITICAL: DO NOT add complexity analysis here
98
+ // Complexity analysis belongs in the delegation system, not context injection
99
+ // This plugin should ONLY handle codex context injection
100
+ const codexMessage = {
101
+ role: "system",
102
+ content: finalContent,
103
+ };
104
+ // Modify context.system array to include codex message
105
+ if (context && context.system && Array.isArray(context.system)) {
106
+ context.system.unshift(codexMessage);
107
+ }
108
+ // Return the original messages (the hook modifies context in place)
109
+ return messages;
110
+ }
111
+ catch (error) {
112
+ console.error("❌ StringRay: Error injecting codex context:", error);
113
+ // Return original messages if injection fails
114
+ return messages;
115
+ }
116
+ },
117
+ "tool.execute.before": (tool, args) => {
118
+ const jobId = generateJobId("codex-injector-tool-before");
119
+ frameworkLogger.log("codex-injector", "tool.execute.before hook called", "info", { tool }, undefined, jobId);
120
+ },
121
+ "tool.execute.after": (tool, args, result) => {
122
+ const jobId = generateJobId("codex-injector-tool-after");
123
+ frameworkLogger.log("codex-injector", "tool.execute.after hook called", "success", { tool }, undefined, jobId);
124
+ },
125
+ };
126
+ // Lightweight bypass for simple interactions
127
+ function isSimpleInteraction(input) {
128
+ if (!input || typeof input !== "object")
129
+ return false;
130
+ // Check messages for simple greetings/chats
131
+ if (input.messages && Array.isArray(input.messages)) {
132
+ const lastMessage = input.messages[input.messages.length - 1];
133
+ if (lastMessage && lastMessage.content) {
134
+ const content = String(lastMessage.content).toLowerCase().trim();
135
+ // Detect basic greetings and chat
136
+ if (content.match(/^(hi|hello|hey|sup|yo|howdy|greeting|chat|how are you|what'?s up)$/i)) {
137
+ return true;
138
+ }
139
+ }
140
+ }
141
+ return false;
142
+ }
143
+ // Export a function that returns the plugin hooks object
144
+ export function stringrayPlugin(input) {
145
+ // Fast path for simple interactions - skip full framework activation
146
+ if (isSimpleInteraction(input)) {
147
+ return {
148
+ config: () => { }, // No-op for simple interactions
149
+ "experimental.chat.system.transform": (messages, context) => {
150
+ // Insert minimal welcome message for simple interactions
151
+ const lightMessage = {
152
+ role: "system",
153
+ content: "Hello! I'm the StrRay Agentic Framework. Ready to help with development tasks.",
154
+ };
155
+ if (context && context.system && Array.isArray(context.system)) {
156
+ context.system.unshift(lightMessage);
157
+ }
158
+ return messages;
159
+ },
160
+ "tool.execute.before": () => { },
161
+ "tool.execute.after": () => { },
162
+ };
163
+ }
164
+ // Full framework activation for complex requests
165
+ return pluginHooks;
166
+ }
167
+ // Default export for compatibility
168
+ export default stringrayPlugin;
169
+ //# sourceMappingURL=stringray-codex-injection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringray-codex-injection.js","sourceRoot":"","sources":["../../src/plugins/stringray-codex-injection.ts"],"names":[],"mappings":"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"}