@remotedraw/cli 0.2.0 → 0.2.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.
@@ -8,7 +8,6 @@
8
8
  export const nl = {
9
9
  // ── Taalkeuze ─────────────────────────────────────────────────────────
10
10
  "language.word": "Taal",
11
- "language.prompt.helper": "Stelt de taal van de RemoteDraw-CLI in. Gegenereerde code en bestanden blijven Engels.",
12
11
  "language.saved": "Taal ingesteld op {language}. Wijzig dit wanneer je wilt met: remotedraw language",
13
12
  "language.current": "Taal: {language} ({locale})",
14
13
  "language.source.flag": "Voor deze opdracht ingesteld met --language.",
@@ -46,6 +45,24 @@ export const nl = {
46
45
  "help.command.createInput": "Maak of toon een testverzoek voor tekeninvoer.",
47
46
  "help.command.examples": "Toon of installeer voorbeeldprojecten.",
48
47
  "help.command.agent": "Toon of installeer de RemoteDraw-agentskill.",
48
+ "help.command.scan": "Lees een codebase en stel voor waar RemoteDraw past.",
49
+ "help.command.project": "Maak een dashboardproject en API-sleutel zonder starterscode.",
50
+ "project.help.usage": " remotedraw project create --name <naam> [--key-name <naam>] [--env <map>] [--format json]",
51
+ "project.help.body": "Maakt een dashboardproject en een projectgebonden ontwikkel-API-sleutel. Er wordt niets gescaffold; gebruik dit als de integratie haar bestanden al heeft.",
52
+ "project.help.env": "Geef --env <map> op om REMOTEDRAW_API_BASE_URL, REMOTEDRAW_PROJECT_ID en REMOTEDRAW_API_KEY naar <map>/.env.local te schrijven in plaats van de sleutel te tonen.",
53
+ "project.help.auth": "Vereist een ingelogde CLI (remotedraw login) of REMOTEDRAW_CLI_TOKEN.",
54
+ "project.error.unknownSubcommand": "Onbekend project-subcommando: {subcommand}. Verwacht: create.",
55
+ "project.error.nameRequired": "--name is verplicht voor project create.",
56
+ "project.created": "Project {name} ({id}) aangemaakt.",
57
+ "project.keyWritten": "API-sleutel geschreven naar {path}.",
58
+ "project.keyOnce": "API-sleutel (eenmalig getoond): {key}",
59
+ "project.keyRule": "Bewaar rd_sk_...-sleutels uitsluitend in backend-secrets; nooit in browserbundels, mobiele apps of versiebeheer.",
60
+ "cloud.warning.clientTree": "src/remotedraw/createRemoteDrawSession.ts leest REMOTEDRAW_API_KEY en moet server-side draaien. Verplaats het naar je API-route, server action, Convex action of serverless functie voordat je het gebruikt; een browserbundel mag het nooit importeren.",
61
+ "scan.help.usage": " remotedraw scan [--path <map>] [--format json]",
62
+ "scan.help.body": "Herkent web-, server- en iOS-projecten, bestaande RemoteDraw-koppelingen en waar een rd_sk_-sleutel mag staan; toont daarna integratieopties en de productvragen die je de gebruiker stelt voordat je bouwt.",
63
+ "scan.help.privacy": "Leest alleen manifesten en bestandsnamen. Toont namen van omgevingsvariabelen, nooit waarden.",
64
+ "scan.help.json": "Gebruik --format json voor het machineleesbare rapport dat agents moeten lezen.",
65
+ "scan.error.missingPath": "Pad bestaat niet: {path}",
49
66
  "help.startHere": "Begin hier:",
50
67
  // ── guide ─────────────────────────────────────────────────────────────
51
68
  "guide.title": "RemoteDraw-integratiegids",
@@ -146,14 +163,6 @@ export const nl = {
146
163
  "choice.sdk.headless.explanation": "Kies dit als een andere taal of eigen client de HTTP-API aanroept. De wizard voegt geen frameworkafhankelijkheid toe.",
147
164
  "choice.sdk.headless.docs": "HTTP API-docs openen",
148
165
  // ── Startpunt ─────────────────────────────────────────────────────────
149
- "choice.preset.signature.label": "Handtekeningstrook",
150
- "choice.preset.signature.hint": "Productklaar merkveld met exacte oppervlaktekoppeling.",
151
- "choice.preset.signature.summary": "Een begrensd handtekeningveld met exact passend telefoonoppervlak.",
152
- "choice.preset.signature.explanation": "Kies dit voor een handtekeningveld dat je zelf om RemoteDrawReceiver heen vormgeeft, met een exact passend telefoonoppervlak. Je kunt logo, tekst, kleur en omliggende formulier-UI aanpassen.",
153
- "choice.preset.signature.docs": "Handtekeningdocs openen",
154
- "choice.preset.initials.summary": "Een klein tekenveld voor initialen.",
155
- "choice.preset.initials.explanation": "Gebruik dit wanneer iemand op één of meerdere plekken korte initialen moet plaatsen, bijvoorbeeld bij documentcontrole.",
156
- "choice.preset.initials.docs": "Initialendocs openen",
157
166
  "choice.preset.approval.summary": "Vrije tekeninvoer voor een visueel akkoord.",
158
167
  "choice.preset.approval.explanation": "Gebruik dit voor goedkeuringen waarbij een vink, paraaf of korte markering voldoende is en je workflow de status beheert.",
159
168
  "choice.preset.approval.docs": "Goedkeuringsdocs openen",
@@ -171,6 +180,8 @@ export const nl = {
171
180
  "choice.preset.mapMarkup.summary": "Tekeningen en aanwijzingen op een kaart.",
172
181
  "choice.preset.mapMarkup.explanation": "Gebruik dit voor routes, locaties of ruimtelijke feedback. Je app beheert de kaart en viewport; RemoteDraw synchroniseert de invoer.",
173
182
  "choice.preset.mapMarkup.docs": "Kaartannotatiedocs openen",
183
+ "choice.preset.screenMarkup.label": "Schermannotatie",
184
+ "choice.preset.screenMarkup.hint": "Teken over een scherm of venster dat je ontvanger deelt.",
174
185
  "choice.preset.screenMarkup.summary": "Aantekeningen op een scherm of applicatieweergave.",
175
186
  "choice.preset.screenMarkup.explanation": "Gebruik dit voor support, demo's en UI-feedback. Je ontvanger levert het schermbeeld waarop de telefoonmarkeringen worden geprojecteerd.",
176
187
  "choice.preset.screenMarkup.docs": "Schermaantekeningdocs openen",
@@ -210,7 +221,6 @@ export const nl = {
210
221
  "wizard.control.back": "Esc terug",
211
222
  "wizard.control.quitCtrlC": "Ctrl+C stoppen",
212
223
  "wizard.control.quitQ": "q stoppen",
213
- "wizard.control.move": "↑/↓ bewegen",
214
224
  "wizard.control.steps": "←/→ stappen",
215
225
  "wizard.control.choose": "↑/↓ kiezen",
216
226
  "wizard.control.docs": "d docs openen",
@@ -228,7 +238,6 @@ export const nl = {
228
238
  "wizard.tagline.setup": "telefoon → canvas · projectsetup",
229
239
  "wizard.tagline": "telefoon → canvas",
230
240
  "wizard.docs.openFailed": "Kon de documentatie niet openen. Gebruik {url}",
231
- "wizard.docs.button": "[ {label} ↗ ]",
232
241
  // ── new / init ────────────────────────────────────────────────────────
233
242
  "new.help.usage.bare": " remotedraw new",
234
243
  "new.help.usage.named": " remotedraw new --app-name <naam> [opties]",
@@ -237,7 +246,7 @@ export const nl = {
237
246
  "new.help.option.target": "web, desktop, ios of headless.",
238
247
  "new.help.option.sender": "remotedraw-ios, embedded-web, own-ios of headless.",
239
248
  "new.help.option.sdk": "react, svelte, js, swift of headless.",
240
- "new.help.option.preset": "signature of sketch. Oude API-presets blijven werken voor bestaande integraties.",
249
+ "new.help.option.preset": "sketch of screenMarkup. De overige API-presets blijven werken voor bestaande integraties.",
241
250
  "new.help.option.packageManager": "npm, pnpm, yarn of bun.",
242
251
  "new.help.option.apiBaseUrl": "Standaard API-origin voor de gegenereerde configuratie.",
243
252
  "new.help.option.force": "Overschrijf gegenereerde bestanden en bestaande RemoteDraw-waarden in .env.local.",
@@ -300,7 +309,7 @@ export const nl = {
300
309
  "doctor.sdk.ok": "{package} staat in de dependencies van package.json.",
301
310
  "doctor.sdk.missing": "Voeg {package}@{range} toe aan de dependencies of voer remotedraw init opnieuw uit.",
302
311
  "doctor.apiKey.ok": "De vorm van de server-API-sleutel klopt.",
303
- "doctor.apiKey.missing": "Bewaar een rd_sk_...-sleutel uitsluitend in backend-secrets.",
312
+ "doctor.apiKey.missing": "Geen rd_sk_...-sleutel gevonden in de omgeving van dit project (REMOTEDRAW_API_KEY). Bewaar die, zodra je er een toevoegt, uitsluitend in backend-secrets.",
304
313
  "doctor.label.deployment": "deployment",
305
314
  "doctor.label.deploymentReachable": "deployment bereikbaar",
306
315
  "doctor.label.apiKeyAccepted": "API-sleutel geaccepteerd",
@@ -366,7 +375,7 @@ export const nl = {
366
375
  "createInput.error.noFetch": "Deze runtime kan geen HTTP-verzoeken uitvoeren.",
367
376
  "createInput.error.noKey": "create-input --execute vereist --api-key of REMOTEDRAW_API_KEY met een rd_sk_...-serversleutel.",
368
377
  "createInput.error.apiStatus": "De RemoteDraw-API gaf {status} terug.",
369
- "createInput.help.usage": " remotedraw create-input [--preset signature] [--json|--curl|--execute]",
378
+ "createInput.help.usage": " remotedraw create-input [--preset sketch] [--json|--curl|--execute]",
370
379
  "createInput.help.option.preset": "Preset voor sessie en invoer.",
371
380
  "createInput.help.option.label": "Label van het doel in de ontvanger.",
372
381
  "createInput.help.option.externalId": "Eigen correlatie-ID van je app.",
package/dist/scan.d.ts ADDED
@@ -0,0 +1,58 @@
1
+ export type ScanRuntime = {
2
+ cwd: string;
3
+ exists: (filePath: string) => boolean | Promise<boolean>;
4
+ readFile: (filePath: string) => Promise<string>;
5
+ readdir?: (dirPath: string) => Promise<string[]>;
6
+ };
7
+ export type ScanProjectKind = "web" | "server" | "ios" | "library" | "unknown";
8
+ export type ScanProject = {
9
+ /** Directory relative to the scan root; `.` for the root itself. */
10
+ path: string;
11
+ name?: string;
12
+ kind: ScanProjectKind;
13
+ /** Framework and runtime signals, deduplicated, stable order. */
14
+ frameworks: string[];
15
+ /** Human-readable proof for every claim above, so the agent can verify. */
16
+ evidence: string[];
17
+ /** For web projects: whether server-side code was found *inside* them. */
18
+ serverSide?: string[];
19
+ };
20
+ export type ScanRecommendation = {
21
+ id: string;
22
+ title: string;
23
+ fit: "strong" | "possible";
24
+ receiver: string;
25
+ sender: string;
26
+ keyLocation: string;
27
+ why: string;
28
+ commands: string[];
29
+ packages: string[];
30
+ };
31
+ export type ScanReport = {
32
+ ok: true;
33
+ command: "scan";
34
+ schemaVersion: 1;
35
+ root: string;
36
+ projects: ScanProject[];
37
+ remotedraw: {
38
+ configured: boolean;
39
+ configFiles: string[];
40
+ packages: string[];
41
+ envKeys: string[];
42
+ swiftPackage: boolean;
43
+ };
44
+ keyBoundary: {
45
+ /** Directories where an `rd_sk_` key may live. Empty means "none found". */
46
+ serverSide: string[];
47
+ warning?: string;
48
+ };
49
+ recommendations: ScanRecommendation[];
50
+ /** Product decisions the agent must ask the user, not decide. */
51
+ questions: string[];
52
+ /** Hard rules for whatever the agent builds next. */
53
+ rules: string[];
54
+ };
55
+ export declare function scanProject(root: string, runtime: ScanRuntime): Promise<ScanReport>;
56
+ export declare const INTEGRATION_RULES: string[];
57
+ export declare function renderScanText(report: ScanReport): string;
58
+ //# sourceMappingURL=scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG;IACxB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;IACtB,iEAAiE;IACjE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,CAAC,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE;QACV,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,WAAW,EAAE;QACX,4EAA4E;QAC5E,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,qDAAqD;IACrD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAoPF,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA4JrB;AA4HD,eAAO,MAAM,iBAAiB,UAS7B,CAAC;AAEF,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,UA6ChD"}