@dcl-regenesislabs/opendcl 0.1.5-23161709858.commit-828c176 → 0.1.5-23569259243.commit-df8937b
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/index.js +68 -49
- package/dist/index.js.map +1 -1
- package/extensions/dcl-deploy.ts +28 -7
- package/package.json +2 -2
- package/skills/deploy-worlds/SKILL.md +2 -4
package/dist/index.js
CHANGED
|
@@ -27,6 +27,11 @@ if (!existsSync(settingsPath)) {
|
|
|
27
27
|
}
|
|
28
28
|
// Build args: start with user's CLI args
|
|
29
29
|
const args = process.argv.slice(2);
|
|
30
|
+
// Detect --headless flag (remove from args before passing to pi-coding-agent)
|
|
31
|
+
const headless = args.includes("--headless");
|
|
32
|
+
if (headless) {
|
|
33
|
+
args.splice(args.indexOf("--headless"), 1);
|
|
34
|
+
}
|
|
30
35
|
// Inject DCL system prompt (strip YAML frontmatter, resolve context/ paths to absolute)
|
|
31
36
|
if (!args.includes("--system-prompt")) {
|
|
32
37
|
const raw = readFileSync(join(packageDir, "prompts/system.md"), "utf-8");
|
|
@@ -37,31 +42,42 @@ if (!args.includes("--system-prompt")) {
|
|
|
37
42
|
.trim();
|
|
38
43
|
args.push("--system-prompt", systemPrompt);
|
|
39
44
|
}
|
|
40
|
-
// Load
|
|
45
|
+
// Load extensions
|
|
41
46
|
const extDir = join(packageDir, "extensions");
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
47
|
+
// Headless mode: only load extensions needed for non-interactive agent operation
|
|
48
|
+
// (e.g., inside a sandboxed web service). Skips UI, preview, screenshot, and
|
|
49
|
+
// interactive extensions that require a terminal or spawned processes.
|
|
50
|
+
const extensions = headless
|
|
51
|
+
? [
|
|
52
|
+
"dcl-context.ts",
|
|
53
|
+
"dcl-validate.ts",
|
|
54
|
+
"dcl-asset-path.ts",
|
|
55
|
+
]
|
|
56
|
+
: [
|
|
57
|
+
"dcl-context.ts",
|
|
58
|
+
"dcl-preview.ts",
|
|
59
|
+
"dcl-init.ts",
|
|
60
|
+
"dcl-deploy.ts",
|
|
61
|
+
"dcl-setup.ts",
|
|
62
|
+
"dcl-validate.ts",
|
|
63
|
+
"dcl-header.ts",
|
|
64
|
+
"dcl-update-check.ts",
|
|
65
|
+
"dcl-status.ts",
|
|
66
|
+
"dcl-tasks.ts",
|
|
67
|
+
"dcl-asset-path.ts",
|
|
68
|
+
"dcl-screenshot.ts",
|
|
69
|
+
];
|
|
56
70
|
// Conditionally load dcl-setup-ollama (hidden by default, enable with ENABLE_OLLAMA_SETUP=true)
|
|
57
|
-
if (process.env.ENABLE_OLLAMA_SETUP === "true") {
|
|
71
|
+
if (!headless && process.env.ENABLE_OLLAMA_SETUP === "true") {
|
|
58
72
|
extensions.push("dcl-setup-ollama.ts");
|
|
59
73
|
}
|
|
60
74
|
for (const ext of extensions) {
|
|
61
75
|
args.push("-e", join(extDir, ext));
|
|
62
76
|
}
|
|
63
|
-
|
|
64
|
-
args.push("-e", join(extDir, "
|
|
77
|
+
if (!headless) {
|
|
78
|
+
args.push("-e", join(extDir, "plan-mode/index.ts"));
|
|
79
|
+
args.push("-e", join(extDir, "permissions/index.ts"));
|
|
80
|
+
}
|
|
65
81
|
// Load all skill directories
|
|
66
82
|
args.push("--skill", join(packageDir, "skills"));
|
|
67
83
|
// Load prompt templates (review, explain — NOT system.md since that's the system prompt)
|
|
@@ -72,37 +88,40 @@ args.push("--prompt-template", join(packageDir, "prompts/explain.md"));
|
|
|
72
88
|
if (!isDev()) {
|
|
73
89
|
process.env.PI_SKIP_VERSION_CHECK = "1";
|
|
74
90
|
}
|
|
75
|
-
//
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
91
|
+
// InteractiveMode patches — only needed for terminal UI, skip in headless mode
|
|
92
|
+
if (!headless) {
|
|
93
|
+
// Suppress pi's generic "No models available" warning — our dcl-setup-ollama
|
|
94
|
+
// extension shows a more helpful message that mentions /setup-ollama.
|
|
95
|
+
const _showWarning = InteractiveMode.prototype.showWarning;
|
|
96
|
+
InteractiveMode.prototype.showWarning = function (msg) {
|
|
97
|
+
if (msg.startsWith("No models available"))
|
|
98
|
+
return;
|
|
99
|
+
_showWarning.call(this, msg);
|
|
100
|
+
};
|
|
101
|
+
// Suppress pi's "What's New" changelog notification on startup — it shows pi's
|
|
102
|
+
// own version/changes, which confuses OpenDCL users.
|
|
103
|
+
InteractiveMode.prototype.getChangelogForDisplay = function () {
|
|
104
|
+
return undefined;
|
|
105
|
+
};
|
|
106
|
+
// Override pi's built-in /changelog command — it shows pi's CHANGELOG.md,
|
|
107
|
+
// not OpenDCL's. The command is hardcoded in handleEditorSubmit before extension
|
|
108
|
+
// commands, so monkey-patching is the only way to intercept it.
|
|
109
|
+
const opendclVersion = JSON.parse(readFileSync(join(packageDir, "package.json"), "utf-8")).version;
|
|
110
|
+
InteractiveMode.prototype.handleChangelogCommand = function () {
|
|
111
|
+
this.showStatus(`OpenDCL v${opendclVersion} — https://github.com/dcl-regenesislabs/opendcl/releases/tag/${opendclVersion}`);
|
|
112
|
+
};
|
|
113
|
+
// Compact tool output — override built-in write/read renderers to reduce terminal noise.
|
|
114
|
+
// When a built-in tool has no custom renderCall/renderResult, pi shows verbose output.
|
|
115
|
+
// By returning compact renderers from getRegisteredToolDefinition, the ToolExecutionComponent
|
|
116
|
+
// uses them instead (see shouldUseBuiltInRenderer() in tool-execution.js).
|
|
117
|
+
const _getToolDef = InteractiveMode.prototype.getRegisteredToolDefinition;
|
|
118
|
+
InteractiveMode.prototype.getRegisteredToolDefinition = function (toolName) {
|
|
119
|
+
const original = _getToolDef.call(this, toolName);
|
|
120
|
+
if (original)
|
|
121
|
+
return original;
|
|
122
|
+
return getCompactToolDefinition(toolName);
|
|
123
|
+
};
|
|
124
|
+
}
|
|
106
125
|
main(args).catch((err) => {
|
|
107
126
|
console.error("OpenDCL fatal error:", err);
|
|
108
127
|
process.exit(1);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEzC,uFAAuF;AACvF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC;AAC7C,CAAC;AAED,wEAAwE;AACxE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AACrD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;IAC9B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3F,CAAC;AAED,yCAAyC;AACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,wFAAwF;AACxF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,GAAG;SACrB,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;SACpC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;SAC9E,IAAI,EAAE,CAAC;IACV,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/extensions/dcl-deploy.ts
CHANGED
|
@@ -13,15 +13,28 @@ import { join } from "node:path";
|
|
|
13
13
|
import { fileExists, findSceneRoot } from "./scene-utils.js";
|
|
14
14
|
|
|
15
15
|
const WORLDS_CONTENT_SERVER = "https://worlds-content-server.decentraland.org";
|
|
16
|
+
const BEVY_BASE = "https://decentraland.zone/bevy-web";
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
interface SceneDeployInfo {
|
|
19
|
+
/** World name (e.g. "boedo.dcl.eth") — presence means it's a World deploy */
|
|
20
|
+
worldName?: string;
|
|
21
|
+
/** Base parcel (e.g. "30,30") for Genesis City */
|
|
22
|
+
baseParcel?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async function getSceneDeployInfo(sceneRoot: string): Promise<SceneDeployInfo> {
|
|
18
26
|
try {
|
|
19
27
|
let content = await readFile(join(sceneRoot, "scene.json"), "utf-8");
|
|
20
28
|
if (content.charCodeAt(0) === 0xfeff) content = content.slice(1);
|
|
21
29
|
const sceneJson = JSON.parse(content);
|
|
22
|
-
|
|
30
|
+
const worldName = sceneJson.worldConfiguration?.name;
|
|
31
|
+
if (worldName) {
|
|
32
|
+
return { worldName };
|
|
33
|
+
}
|
|
34
|
+
const baseParcel = sceneJson.scene?.base;
|
|
35
|
+
return { baseParcel };
|
|
23
36
|
} catch {
|
|
24
|
-
return
|
|
37
|
+
return {};
|
|
25
38
|
}
|
|
26
39
|
}
|
|
27
40
|
|
|
@@ -39,13 +52,14 @@ async function deployScene(
|
|
|
39
52
|
return { message: "node_modules not found. Run 'npm install' first.", isError: true };
|
|
40
53
|
}
|
|
41
54
|
|
|
42
|
-
const
|
|
55
|
+
const deployInfo = await getSceneDeployInfo(sceneRoot);
|
|
56
|
+
const isWorld = Boolean(deployInfo.worldName);
|
|
43
57
|
const deployArgs = ["@dcl/sdk-commands", "deploy"];
|
|
44
|
-
if (
|
|
58
|
+
if (isWorld) {
|
|
45
59
|
deployArgs.push("--target-content", WORLDS_CONTENT_SERVER);
|
|
46
60
|
}
|
|
47
61
|
|
|
48
|
-
const targetLabel =
|
|
62
|
+
const targetLabel = isWorld ? "World" : "Genesis City";
|
|
49
63
|
|
|
50
64
|
try {
|
|
51
65
|
const result = await pi.exec("npx", deployArgs, {
|
|
@@ -54,7 +68,14 @@ async function deployScene(
|
|
|
54
68
|
});
|
|
55
69
|
|
|
56
70
|
if (result.code === 0) {
|
|
57
|
-
|
|
71
|
+
let visitUrl: string | undefined;
|
|
72
|
+
if (deployInfo.worldName) {
|
|
73
|
+
visitUrl = `${BEVY_BASE}?realm=${deployInfo.worldName}`;
|
|
74
|
+
} else if (deployInfo.baseParcel) {
|
|
75
|
+
visitUrl = `${BEVY_BASE}?position=${deployInfo.baseParcel}`;
|
|
76
|
+
}
|
|
77
|
+
const urlLine = visitUrl ? `\nVisit: ${visitUrl}` : "";
|
|
78
|
+
return { message: `Scene deployed to ${targetLabel} successfully!${urlLine}` };
|
|
58
79
|
} else {
|
|
59
80
|
return { message: `Deploy failed (exit code ${result.code}): ${result.stderr || result.stdout}`, isError: true };
|
|
60
81
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl-regenesislabs/opendcl",
|
|
3
|
-
"version": "0.1.5-
|
|
3
|
+
"version": "0.1.5-23569259243.commit-df8937b",
|
|
4
4
|
"description": "AI coding assistant for Decentraland SDK7 scene development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
"prompts/",
|
|
68
68
|
"context/"
|
|
69
69
|
],
|
|
70
|
-
"commit": "
|
|
70
|
+
"commit": "df8937b560bcf480c9efe51eaa38234a19e55081"
|
|
71
71
|
}
|
|
@@ -65,14 +65,12 @@ This will prompt the user to sign the deployment with their wallet. Validations
|
|
|
65
65
|
|
|
66
66
|
## 3. Access the World
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
After a successful deploy, the `/deploy` command outputs a visit URL automatically. The World is also accessible at:
|
|
69
69
|
|
|
70
70
|
```
|
|
71
|
-
decentraland
|
|
71
|
+
https://decentraland.zone/bevy-web?realm=NAME.dcl.eth
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
Replace `NAME` with the Decentraland NAME or ENS domain used for deployment.
|
|
75
|
-
|
|
76
74
|
From inside Decentraland, use the chatbox command:
|
|
77
75
|
```
|
|
78
76
|
/goto NAME.dcl.eth
|