@hybridlabor-api/aos 4.0.2 → 4.1.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.
Files changed (79) hide show
  1. package/.claude/agents/database-reviewer.md +109 -0
  2. package/.claude/agents/go-build-resolver.md +112 -0
  3. package/.claude/agents/opensource-forker.md +216 -0
  4. package/.claude/agents/opensource-sanitizer.md +206 -0
  5. package/.claude/agents/security-reviewer.md +126 -0
  6. package/.claude/agents/silent-failure-hunter.md +68 -0
  7. package/CLAUDE.md +15 -0
  8. package/README.md +0 -13
  9. package/THIRD_PARTY_NOTICES.md +133 -0
  10. package/package.json +4 -2
  11. package/skills/basic/bdbmediastorm/SKILL.md +7 -1
  12. package/skills/basic/startcycle/SKILL.md +2 -0
  13. package/skills/bdbrainstorm/SKILL.md +1 -0
  14. package/skills/global_config/plan-canvas/SKILL.md +233 -0
  15. package/skills/global_config/plan-canvas/scripts/lib/loopback-guard.js +59 -0
  16. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/markdown.js +301 -0
  17. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/sdk.js +239 -0
  18. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/server.js +636 -0
  19. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/sessions.js +271 -0
  20. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/ui.js +630 -0
  21. package/skills/global_config/plan-canvas/scripts/plan-canvas.js +419 -0
  22. package/.agents/skills/firecrawl/SKILL.md +0 -149
  23. package/.agents/skills/firecrawl/rules/install.md +0 -82
  24. package/.agents/skills/firecrawl/rules/security.md +0 -26
  25. package/.agents/skills/firecrawl-agent/SKILL.md +0 -58
  26. package/.agents/skills/firecrawl-build/SKILL.md +0 -39
  27. package/.agents/skills/firecrawl-build-interact/SKILL.md +0 -68
  28. package/.agents/skills/firecrawl-build-onboarding/SKILL.md +0 -103
  29. package/.agents/skills/firecrawl-build-onboarding/references/auth-flow.md +0 -39
  30. package/.agents/skills/firecrawl-build-onboarding/references/project-setup.md +0 -20
  31. package/.agents/skills/firecrawl-build-onboarding/references/sdk-installation.md +0 -17
  32. package/.agents/skills/firecrawl-build-scrape/SKILL.md +0 -69
  33. package/.agents/skills/firecrawl-build-search/SKILL.md +0 -69
  34. package/.agents/skills/firecrawl-crawl/SKILL.md +0 -59
  35. package/.agents/skills/firecrawl-download/SKILL.md +0 -70
  36. package/.agents/skills/firecrawl-interact/SKILL.md +0 -84
  37. package/.agents/skills/firecrawl-map/SKILL.md +0 -51
  38. package/.agents/skills/firecrawl-scrape/SKILL.md +0 -69
  39. package/.agents/skills/firecrawl-search/SKILL.md +0 -60
  40. package/docs/sessions/AUDIT-HANDOVER-2026-08-28.md +0 -169
  41. package/docs/sessions/BDB_REMOTEOS_MCP_HANDOVER.md +0 -130
  42. package/docs/sessions/SESSION-HANDOVER-v3.13.md +0 -249
  43. package/mcps/RhinoMCP/cc-plugin/.claude/settings.json +0 -10
  44. package/mcps/after-effects-mcp/build/index.js +0 -840
  45. package/mcps/after-effects-mcp/build/scripts/applyEffect.jsx +0 -153
  46. package/mcps/after-effects-mcp/build/scripts/applyEffectTemplate.jsx +0 -218
  47. package/mcps/after-effects-mcp/build/scripts/createComposition.jsx +0 -71
  48. package/mcps/after-effects-mcp/build/scripts/createShapeLayer.jsx +0 -147
  49. package/mcps/after-effects-mcp/build/scripts/createSolidLayer.jsx +0 -114
  50. package/mcps/after-effects-mcp/build/scripts/createTextLayer.jsx +0 -115
  51. package/mcps/after-effects-mcp/build/scripts/getLayerInfo.jsx +0 -192
  52. package/mcps/after-effects-mcp/build/scripts/getProjectInfo.jsx +0 -90
  53. package/mcps/after-effects-mcp/build/scripts/listCompositions.jsx +0 -50
  54. package/mcps/after-effects-mcp/build/scripts/mcp-bridge-auto.jsx +0 -1773
  55. package/mcps/after-effects-mcp/build/scripts/setLayerProperties.jsx +0 -160
  56. package/mcps/bdb-remoteos-mcp/queue.db +0 -0
  57. package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/__init__.cpython-312.pyc +0 -0
  58. package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/incus_client.cpython-312.pyc +0 -0
  59. package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/main.cpython-312.pyc +0 -0
  60. package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/queue.cpython-312.pyc +0 -0
  61. package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/schemas.cpython-312.pyc +0 -0
  62. package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/server.cpython-312.pyc +0 -0
  63. package/mcps/bdb-remoteos-mcp/src/bdb_remoteos_mcp/__pycache__/webhook.cpython-312.pyc +0 -0
  64. package/mcps/bdb-remoteos-mcp/tests/__pycache__/__init__.cpython-312.pyc +0 -0
  65. package/mcps/bdb-remoteos-mcp/tests/__pycache__/mock_incus.cpython-312.pyc +0 -0
  66. package/mcps/bdb-remoteos-mcp/tests/__pycache__/test_mcp_server.cpython-312-pytest-9.1.1.pyc +0 -0
  67. package/mcps/bdb-remoteos-mcp/tests/__pycache__/test_security_redteam.cpython-312-pytest-9.1.1.pyc +0 -0
  68. package/mcps/bdb-remoteos-mcp/tests/__pycache__/test_webhook.cpython-312-pytest-9.1.1.pyc +0 -0
  69. package/mcps/computer-use-mcp/dist/client.d.ts +0 -150
  70. package/mcps/computer-use-mcp/dist/client.js +0 -136
  71. package/mcps/computer-use-mcp/dist/entrypoint.d.ts +0 -16
  72. package/mcps/computer-use-mcp/dist/entrypoint.js +0 -26
  73. package/mcps/computer-use-mcp/dist/native.d.ts +0 -212
  74. package/mcps/computer-use-mcp/dist/native.js +0 -50
  75. package/mcps/computer-use-mcp/dist/server.d.ts +0 -32
  76. package/mcps/computer-use-mcp/dist/server.js +0 -342
  77. package/mcps/computer-use-mcp/dist/session.d.ts +0 -101
  78. package/mcps/computer-use-mcp/dist/session.js +0 -2372
  79. package/skills/bdbsaastraining/scripts/__pycache__/build_profile.cpython-314.pyc +0 -0
@@ -1,114 +0,0 @@
1
- // createSolidLayer.jsx
2
- // Creates a new solid layer in the specified composition
3
-
4
- function createSolidLayer(args) {
5
- try {
6
- // Extract parameters from args
7
- var compName = args.compName || "";
8
- var color = args.color || [1, 1, 1]; // Default to white
9
- var name = args.name || "Solid Layer";
10
- var position = args.position || [960, 540]; // Default to center
11
- var size = args.size; // Width, Height (if null, will use comp size)
12
- var startTime = args.startTime || 0;
13
- var duration = args.duration || 5; // Default 5 seconds
14
- var isAdjustment = args.isAdjustment || false; // Make it an adjustment layer?
15
-
16
- // Find the composition by name
17
- var comp = null;
18
- for (var i = 1; i <= app.project.numItems; i++) {
19
- var item = app.project.item(i);
20
- if (item instanceof CompItem && item.name === compName) {
21
- comp = item;
22
- break;
23
- }
24
- }
25
-
26
- // If no composition was found by name, use the active composition
27
- if (!comp) {
28
- if (app.project.activeItem instanceof CompItem) {
29
- comp = app.project.activeItem;
30
- } else {
31
- throw new Error("No composition found with name '" + compName + "' and no active composition");
32
- }
33
- }
34
-
35
- // If size is not specified, use composition size
36
- if (!size) {
37
- size = [comp.width, comp.height];
38
- }
39
-
40
- // Create a solid layer
41
- var solidLayer;
42
-
43
- if (isAdjustment) {
44
- // Create an adjustment layer
45
- solidLayer = comp.layers.addSolid([0, 0, 0], name, size[0], size[1], 1);
46
- solidLayer.adjustmentLayer = true;
47
- } else {
48
- // Create a regular solid layer
49
- solidLayer = comp.layers.addSolid(
50
- color,
51
- name,
52
- size[0],
53
- size[1],
54
- 1 // Pixel aspect ratio
55
- );
56
- }
57
-
58
- // Set position
59
- solidLayer.property("Position").setValue(position);
60
-
61
- // Set timing
62
- solidLayer.startTime = startTime;
63
- if (duration > 0) {
64
- solidLayer.outPoint = startTime + duration;
65
- }
66
-
67
- // Return success with layer details
68
- return JSON.stringify({
69
- status: "success",
70
- message: isAdjustment ? "Adjustment layer created successfully" : "Solid layer created successfully",
71
- layer: {
72
- name: solidLayer.name,
73
- index: solidLayer.index,
74
- type: isAdjustment ? "adjustment" : "solid",
75
- inPoint: solidLayer.inPoint,
76
- outPoint: solidLayer.outPoint,
77
- position: solidLayer.property("Position").value,
78
- isAdjustment: solidLayer.adjustmentLayer
79
- }
80
- }, null, 2);
81
- } catch (error) {
82
- // Return error message
83
- return JSON.stringify({
84
- status: "error",
85
- message: error.toString()
86
- }, null, 2);
87
- }
88
- }
89
-
90
- // Read arguments from the file (passed by the Node.js script)
91
- var argsFile = new File($.fileName.replace(/[^\\\/]*$/, '') + "../temp/args.json");
92
- var args = {};
93
- if (argsFile.exists) {
94
- argsFile.open("r");
95
- var content = argsFile.read();
96
- argsFile.close();
97
- if (content) {
98
- try {
99
- args = JSON.parse(content);
100
- } catch (e) {
101
- // Handle parsing error
102
- $.write(JSON.stringify({
103
- status: "error",
104
- message: "Failed to parse arguments: " + e.toString()
105
- }, null, 2));
106
- }
107
- }
108
- }
109
-
110
- // Run the function and write the result
111
- var result = createSolidLayer(args);
112
-
113
- // Write the result so it can be captured by the Node.js process
114
- $.write(result);
@@ -1,115 +0,0 @@
1
- // createTextLayer.jsx
2
- // Creates a new text layer in the specified composition
3
-
4
- function createTextLayer(args) {
5
- try {
6
- // Extract parameters from args
7
- var compName = args.compName || "";
8
- var text = args.text || "Text Layer";
9
- var position = args.position || [960, 540]; // Default to center
10
- var fontSize = args.fontSize || 72;
11
- var color = args.color || [1, 1, 1]; // Default to white
12
- var startTime = args.startTime || 0;
13
- var duration = args.duration || 5; // Default 5 seconds
14
- var fontFamily = args.fontFamily || "Arial";
15
- var alignment = args.alignment || "center"; // "left", "center", "right"
16
-
17
- // Find the composition by name
18
- var comp = null;
19
- for (var i = 1; i <= app.project.numItems; i++) {
20
- var item = app.project.item(i);
21
- if (item instanceof CompItem && item.name === compName) {
22
- comp = item;
23
- break;
24
- }
25
- }
26
-
27
- // If no composition was found by name, use the active composition
28
- if (!comp) {
29
- if (app.project.activeItem instanceof CompItem) {
30
- comp = app.project.activeItem;
31
- } else {
32
- throw new Error("No composition found with name '" + compName + "' and no active composition");
33
- }
34
- }
35
-
36
- // Create the text layer
37
- var textLayer = comp.layers.addText(text);
38
-
39
- // Get text properties
40
- var textProp = textLayer.property("ADBE Text Properties").property("ADBE Text Document");
41
- var textDocument = textProp.value;
42
-
43
- // Set font size and color
44
- textDocument.fontSize = fontSize;
45
- textDocument.fillColor = color;
46
- textDocument.font = fontFamily;
47
-
48
- // Set text alignment
49
- if (alignment === "left") {
50
- textDocument.justification = ParagraphJustification.LEFT_JUSTIFY;
51
- } else if (alignment === "center") {
52
- textDocument.justification = ParagraphJustification.CENTER_JUSTIFY;
53
- } else if (alignment === "right") {
54
- textDocument.justification = ParagraphJustification.RIGHT_JUSTIFY;
55
- }
56
-
57
- // Update the text property
58
- textProp.setValue(textDocument);
59
-
60
- // Set position
61
- textLayer.property("Position").setValue(position);
62
-
63
- // Set timing
64
- textLayer.startTime = startTime;
65
- if (duration > 0) {
66
- textLayer.outPoint = startTime + duration;
67
- }
68
-
69
- // Return success with layer details
70
- return JSON.stringify({
71
- status: "success",
72
- message: "Text layer created successfully",
73
- layer: {
74
- name: textLayer.name,
75
- index: textLayer.index,
76
- type: "text",
77
- inPoint: textLayer.inPoint,
78
- outPoint: textLayer.outPoint,
79
- position: textLayer.property("Position").value
80
- }
81
- }, null, 2);
82
- } catch (error) {
83
- // Return error message
84
- return JSON.stringify({
85
- status: "error",
86
- message: error.toString()
87
- }, null, 2);
88
- }
89
- }
90
-
91
- // Read arguments from the file (passed by the Node.js script)
92
- var argsFile = new File($.fileName.replace(/[^\\\/]*$/, '') + "../temp/args.json");
93
- var args = {};
94
- if (argsFile.exists) {
95
- argsFile.open("r");
96
- var content = argsFile.read();
97
- argsFile.close();
98
- if (content) {
99
- try {
100
- args = JSON.parse(content);
101
- } catch (e) {
102
- // Handle parsing error
103
- $.write(JSON.stringify({
104
- status: "error",
105
- message: "Failed to parse arguments: " + e.toString()
106
- }, null, 2));
107
- }
108
- }
109
- }
110
-
111
- // Run the function and write the result
112
- var result = createTextLayer(args);
113
-
114
- // Write the result so it can be captured by the Node.js process
115
- $.write(result);
@@ -1,192 +0,0 @@
1
- // getLayerInfo.jsx
2
- // Get detailed information about layers in a composition
3
-
4
- function getLayerInfo() {
5
- var project = app.project;
6
- var compName = undefined;
7
-
8
- // Read arguments from the file (passed by the Node.js script)
9
- var argsFile = new File($.fileName.replace(/[^\\\/]*$/, '') + "../temp/args.json");
10
- var args = {};
11
- if (argsFile.exists) {
12
- argsFile.open("r");
13
- var content = argsFile.read();
14
- argsFile.close();
15
- if (content) {
16
- try {
17
- args = JSON.parse(content);
18
- compName = args.compositionName;
19
- } catch (e) {
20
- // Handle parsing error
21
- }
22
- }
23
- }
24
-
25
- var result = {
26
- compositions: []
27
- };
28
-
29
- // Find compositions and their layers
30
- for (var i = 1; i <= project.numItems; i++) {
31
- var item = project.item(i);
32
- if (item instanceof CompItem && (!compName || item.name === compName)) {
33
- var compData = {
34
- name: item.name,
35
- id: item.id,
36
- duration: item.duration,
37
- frameRate: item.frameRate,
38
- width: item.width,
39
- height: item.height,
40
- layers: []
41
- };
42
-
43
- // Process layers in the composition
44
- for (var j = 1; j <= item.numLayers; j++) {
45
- var layer = item.layer(j);
46
- var layerData = {
47
- name: layer.name,
48
- index: layer.index,
49
- enabled: layer.enabled,
50
- locked: layer.locked,
51
- solo: layer.solo,
52
- shy: layer.shy,
53
- type: determineLayerType(layer),
54
- inPoint: layer.inPoint,
55
- outPoint: layer.outPoint,
56
- duration: layer.outPoint - layer.inPoint,
57
- startTime: layer.startTime,
58
- label: layer.label,
59
- hasAudio: layer.hasAudio,
60
- hasVideo: layer.hasVideo,
61
- position: layer.position.value,
62
- effects: getEffects(layer),
63
- properties: getKeyProperties(layer)
64
- };
65
-
66
- compData.layers.push(layerData);
67
- }
68
-
69
- result.compositions.push(compData);
70
-
71
- if (compName) {
72
- break; // If we found the specific comp, no need to continue
73
- }
74
- }
75
- }
76
-
77
- return JSON.stringify(result, null, 2);
78
- }
79
-
80
- function determineLayerType(layer) {
81
- if (!layer.source) {
82
- return "Null";
83
- }
84
-
85
- if (layer.source instanceof CompItem) {
86
- return "Composition";
87
- }
88
-
89
- if (layer.source instanceof FootageItem) {
90
- if (layer.source.mainSource instanceof SolidSource) {
91
- return "Solid";
92
- }
93
-
94
- if (layer.source.mainSource instanceof FileSource) {
95
- if (layer.source.hasVideo) {
96
- return "Video";
97
- }
98
- if (layer.source.hasAudio) {
99
- return "Audio";
100
- }
101
-
102
- // Check file extension for image types
103
- var fileName = layer.source.file.name.toLowerCase();
104
- if (/\.(png|jpg|jpeg|gif|tiff|tif|bmp|psd|ai|eps)$/.test(fileName)) {
105
- return "Image";
106
- }
107
- }
108
-
109
- if (layer.source.mainSource instanceof PlaceholderSource) {
110
- return "Placeholder";
111
- }
112
-
113
- return "Footage";
114
- }
115
-
116
- if (layer.text) {
117
- return "Text";
118
- }
119
-
120
- if (layer.name.indexOf("Light") === 0) {
121
- return "Light";
122
- }
123
-
124
- if (layer.name.indexOf("Camera") === 0) {
125
- return "Camera";
126
- }
127
-
128
- return "Unknown";
129
- }
130
-
131
- function getEffects(layer) {
132
- var effects = [];
133
-
134
- if (!layer.effect || layer.effect.numProperties === 0) {
135
- return effects;
136
- }
137
-
138
- for (var i = 1; i <= layer.effect.numProperties; i++) {
139
- var effect = layer.effect(i);
140
- effects.push({
141
- name: effect.name,
142
- matchName: effect.matchName,
143
- enabled: effect.enabled
144
- });
145
- }
146
-
147
- return effects;
148
- }
149
-
150
- function getKeyProperties(layer) {
151
- var properties = [];
152
-
153
- // Common properties to check
154
- var propNames = [
155
- "Opacity", "Position", "Scale", "Rotation",
156
- "Anchor Point", "Transform", "Effects"
157
- ];
158
-
159
- for (var i = 0; i < propNames.length; i++) {
160
- try {
161
- var propName = propNames[i];
162
- var prop = layer.property(propName);
163
-
164
- if (prop && prop.numKeys > 0) {
165
- var keyframes = [];
166
-
167
- for (var k = 1; k <= prop.numKeys; k++) {
168
- keyframes.push({
169
- time: prop.keyTime(k),
170
- value: prop.keyValue(k)
171
- });
172
- }
173
-
174
- properties.push({
175
- name: propName,
176
- numKeys: prop.numKeys,
177
- keyframes: keyframes
178
- });
179
- }
180
- } catch (e) {
181
- // Skip properties that don't exist or can't be accessed
182
- }
183
- }
184
-
185
- return properties;
186
- }
187
-
188
- // Run the function and write the result
189
- var result = getLayerInfo();
190
-
191
- // Write the result so it can be captured by the Node.js process
192
- $.write(result);
@@ -1,90 +0,0 @@
1
- // getProjectInfo.jsx
2
- // Get information about the current After Effects project
3
-
4
- function getProjectInfo() {
5
- var project = app.project;
6
- var result = {
7
- projectName: project.file ? project.file.name : "Untitled Project",
8
- path: project.file ? project.file.fsName : "",
9
- numItems: project.numItems,
10
- bitsPerChannel: project.bitsPerChannel,
11
- timeMode: project.timeDisplayType === TimeDisplayType.FRAMES ? "Frames" : "Timecode",
12
- items: []
13
- };
14
-
15
- // Count item types
16
- var countByType = {
17
- compositions: 0,
18
- footage: 0,
19
- folders: 0,
20
- solids: 0
21
- };
22
-
23
- // Get item information
24
- for (var i = 1; i <= project.numItems; i++) {
25
- var item = project.item(i);
26
- var itemType = "";
27
-
28
- if (item instanceof CompItem) {
29
- itemType = "Composition";
30
- countByType.compositions++;
31
- } else if (item instanceof FolderItem) {
32
- itemType = "Folder";
33
- countByType.folders++;
34
- } else if (item instanceof FootageItem) {
35
- if (item.mainSource instanceof SolidSource) {
36
- itemType = "Solid";
37
- countByType.solids++;
38
- } else {
39
- itemType = "Footage";
40
- countByType.footage++;
41
- }
42
- }
43
-
44
- result.items.push({
45
- id: item.id,
46
- name: item.name,
47
- type: itemType
48
- });
49
- }
50
-
51
- result.itemCounts = countByType;
52
-
53
- // Include active composition metadata if available
54
- if (app.project.activeItem instanceof CompItem) {
55
- var ac = app.project.activeItem;
56
- result.activeComp = {
57
- id: ac.id,
58
- name: ac.name,
59
- width: ac.width,
60
- height: ac.height,
61
- duration: ac.duration,
62
- frameRate: ac.frameRate,
63
- numLayers: ac.numLayers
64
- };
65
- }
66
-
67
- return JSON.stringify(result, null, 2);
68
- }
69
-
70
- // Read arguments from the file (passed by the Node.js script)
71
- var argsFile = new File($.fileName.replace(/[^\\\/]*$/, '') + "../temp/args.json");
72
- var args = {};
73
- if (argsFile.exists) {
74
- argsFile.open("r");
75
- var content = argsFile.read();
76
- argsFile.close();
77
- if (content) {
78
- try {
79
- args = JSON.parse(content);
80
- } catch (e) {
81
- // Handle parsing error
82
- }
83
- }
84
- }
85
-
86
- // Run the function and write the result
87
- var result = getProjectInfo();
88
-
89
- // Write the result so it can be captured by the Node.js process
90
- $.write(result);
@@ -1,50 +0,0 @@
1
- // listCompositions.jsx
2
- // Lists all compositions in the current project
3
-
4
- function listCompositions() {
5
- var project = app.project;
6
- var result = {
7
- projectName: project.file ? project.file.name : "Untitled Project",
8
- compositions: []
9
- };
10
-
11
- for (var i = 1; i <= project.numItems; i++) {
12
- var item = project.item(i);
13
- if (item instanceof CompItem) {
14
- result.compositions.push({
15
- name: item.name,
16
- id: item.id,
17
- duration: item.duration,
18
- frameDuration: item.frameDuration,
19
- frameRate: item.frameRate,
20
- width: item.width,
21
- height: item.height,
22
- numLayers: item.numLayers
23
- });
24
- }
25
- }
26
-
27
- return JSON.stringify(result, null, 2);
28
- }
29
-
30
- // Read arguments from the file (passed by the Node.js script)
31
- var argsFile = new File($.fileName.replace(/[^\\\/]*$/, '') + "../temp/args.json");
32
- var args = {};
33
- if (argsFile.exists) {
34
- argsFile.open("r");
35
- var content = argsFile.read();
36
- argsFile.close();
37
- if (content) {
38
- try {
39
- args = JSON.parse(content);
40
- } catch (e) {
41
- // Handle parsing error
42
- }
43
- }
44
- }
45
-
46
- // Run the function and write the result
47
- var result = listCompositions();
48
-
49
- // Write the result so it can be captured by the Node.js process
50
- $.write(result);