@interchained/portal-agent 0.1.4 → 0.1.6
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/generate.js +23 -5
- package/dist/generate.js.map +1 -1
- package/package.json +2 -2
package/dist/generate.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Flow without Sentinel (--no-sentinel or API key absent):
|
|
8
8
|
* Runner generates → patch saved as "pending" → human approves via CLI
|
|
9
9
|
*/
|
|
10
|
-
import { readFile } from "node:fs/promises";
|
|
10
|
+
import { readFile, access } from "node:fs/promises";
|
|
11
11
|
import { join } from "node:path";
|
|
12
12
|
import { createPatch, PatchStore } from "./patch.js";
|
|
13
13
|
/**
|
|
@@ -15,7 +15,7 @@ import { createPatch, PatchStore } from "./patch.js";
|
|
|
15
15
|
*/
|
|
16
16
|
export async function generatePage(page, opts, store) {
|
|
17
17
|
const { runner, sentinel, contract } = opts;
|
|
18
|
-
const fileName = routeToFileName(page.route);
|
|
18
|
+
const fileName = await routeToFileName(page.route, join(opts.projectRoot, "routes"));
|
|
19
19
|
const filePath = join(opts.projectRoot, "routes", fileName);
|
|
20
20
|
let original = "";
|
|
21
21
|
try {
|
|
@@ -79,9 +79,27 @@ export async function generateFromPrompt(prompt, opts, store) {
|
|
|
79
79
|
return generatePage(page, opts, resolvedStore);
|
|
80
80
|
}
|
|
81
81
|
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Convert a route like /docs to a file path like docs/index.page.tsx.
|
|
84
|
+
*
|
|
85
|
+
* Rule: if a routes/<segment>/ directory already exists, use the
|
|
86
|
+
* index convention (foo/index.page.tsx) so the file sits alongside its
|
|
87
|
+
* siblings instead of shadowing the directory. Otherwise use the flat
|
|
88
|
+
* convention (foo.page.tsx). Root / always maps to index.page.tsx.
|
|
89
|
+
*/
|
|
90
|
+
async function routeToFileName(route, routesDir) {
|
|
91
|
+
const clean = route.replace(/^\//, "").replace(/\/$/, "") || "index";
|
|
92
|
+
if (clean === "index")
|
|
93
|
+
return "index.page.tsx";
|
|
94
|
+
// Check if a directory already exists for this segment
|
|
95
|
+
const dirPath = join(routesDir, clean);
|
|
96
|
+
let dirExists = false;
|
|
97
|
+
try {
|
|
98
|
+
await access(dirPath);
|
|
99
|
+
dirExists = true;
|
|
100
|
+
}
|
|
101
|
+
catch { /* */ }
|
|
102
|
+
return dirExists ? `${clean}/index.page.tsx` : `${clean}.page.tsx`;
|
|
85
103
|
}
|
|
86
104
|
function promptToRoute(prompt) {
|
|
87
105
|
return ("/" +
|
package/dist/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interchained/portal-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Agent runtime for Portal — AiAssist.net runner/sentinel, audit, generate, improve, guard",
|
|
5
5
|
"license": "GPL-3.0-or-later",
|
|
6
6
|
"author": "Interchained <dev@interchained.org>",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"prepublishOnly": "npm run typecheck && npm run build"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@interchained/portal-contract": "
|
|
29
|
+
"@interchained/portal-contract": "^0.1.0",
|
|
30
30
|
"picocolors": "^1.0.1",
|
|
31
31
|
"ora": "^8.0.1"
|
|
32
32
|
},
|