apiario 0.1.4 → 0.2.1
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/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/extensions/localization.d.ts +19 -0
- package/dist/extensions/localization.d.ts.map +1 -0
- package/dist/extensions/localization.js +30 -0
- package/dist/extensions/localization.js.map +1 -0
- package/dist/extensions/voice.d.ts +13 -0
- package/dist/extensions/voice.d.ts.map +1 -0
- package/dist/extensions/voice.js +88 -0
- package/dist/extensions/voice.js.map +1 -0
- package/package.json +3 -3
package/dist/cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import { AuthStorage, ModelRegistry, InteractiveMode, runPrintMode, createAgentS
|
|
|
3
3
|
import { resolveApiKey, runSetupWizard } from "./auth.js";
|
|
4
4
|
import { resolveModels, mapToProviderModelConfigs, sortModelsByPriority } from "./provider.js";
|
|
5
5
|
import { API_BASE_URL, apiClientHeaders } from "./client.js";
|
|
6
|
-
import
|
|
6
|
+
import localizationExtension from "./extensions/localization.js";
|
|
7
7
|
import { homedir } from "os";
|
|
8
8
|
import { join } from "path";
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
@@ -58,7 +58,7 @@ async function main() {
|
|
|
58
58
|
authStorage,
|
|
59
59
|
modelRegistry,
|
|
60
60
|
resourceLoaderOptions: {
|
|
61
|
-
extensionFactories: [
|
|
61
|
+
extensionFactories: [localizationExtension],
|
|
62
62
|
},
|
|
63
63
|
});
|
|
64
64
|
// Get the first model from our registered provider
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,YAAY,EACZ,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC1B,cAAc,GACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Package version string (semver) — re-exported for use by extensions. */
|
|
2
2
|
export declare const VERSION: string;
|
|
3
|
-
export declare const API_BASE_URL
|
|
3
|
+
export declare const API_BASE_URL: string;
|
|
4
4
|
/**
|
|
5
5
|
* Returns headers that identify the client making the request.
|
|
6
6
|
* Every outbound API call to api.apiario.dev should include these.
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAYA,2EAA2E;AAC3E,eAAO,MAAM,OAAO,EAAE,MAAgB,CAAC;AAMvC,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAYA,2EAA2E;AAC3E,eAAO,MAAM,OAAO,EAAE,MAAgB,CAAC;AAMvC,eAAO,MAAM,YAAY,QACqC,CAAC;AAM/D;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKzD"}
|
package/dist/client.js
CHANGED
|
@@ -12,7 +12,7 @@ export const VERSION = version;
|
|
|
12
12
|
// ---------------------------------------------------------------------------
|
|
13
13
|
// API base URL
|
|
14
14
|
// ---------------------------------------------------------------------------
|
|
15
|
-
export const API_BASE_URL = "https://api.apiario.dev/v1";
|
|
15
|
+
export const API_BASE_URL = process.env.APIARIO_BASE_URL ?? "https://api.apiario.dev/v1";
|
|
16
16
|
// ---------------------------------------------------------------------------
|
|
17
17
|
// Client identification headers
|
|
18
18
|
// ---------------------------------------------------------------------------
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAE9E,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;AAEtE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,OAAO,GAAW,OAAO,CAAC;AAEvC,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAE9E,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;AAEtE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,OAAO,GAAW,OAAO,CAAC;AAEvC,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,CAAC,MAAM,YAAY,GACvB,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,4BAA4B,CAAC;AAE/D,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,UAAU,EAAE,iBAAiB;QAC7B,kBAAkB,EAAE,OAAO;KAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Localização pt-BR para o TUI do Apiário Dev
|
|
3
|
+
*
|
|
4
|
+
* Traduz os pontos da interface do pi.dev expostos pela Extension API que
|
|
5
|
+
* podem ser sobrescritos sem reimplementar componentes inteiros:
|
|
6
|
+
*
|
|
7
|
+
* - Working message: "Trabalhando..." (em vez de "Working...")
|
|
8
|
+
* - Hidden thinking label: "Pensando..." (em vez de "Thinking...")
|
|
9
|
+
* - Título do terminal: "🐝 Apiário Dev"
|
|
10
|
+
*
|
|
11
|
+
* O footer NÃO é reescrito aqui. A API `ctx.ui.setFooter()` é tudo-ou-nada
|
|
12
|
+
* e o footer padrão expõe pwd, context window %, cache tokens e thinking
|
|
13
|
+
* level que perderíamos numa reimplementação só pra trocar `$` por `R$`.
|
|
14
|
+
* A correção desse ponto depende de suporte upstream a locale/currency no
|
|
15
|
+
* pi.dev — issue será aberta em earendil-works/pi-mono.
|
|
16
|
+
*/
|
|
17
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
18
|
+
export default function localizationExtension(pi: ExtensionAPI): void;
|
|
19
|
+
//# sourceMappingURL=localization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localization.d.ts","sourceRoot":"","sources":["../../src/extensions/localization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AAMtF,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAAE,EAAE,YAAY,QAU7D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Localização pt-BR para o TUI do Apiário Dev
|
|
3
|
+
*
|
|
4
|
+
* Traduz os pontos da interface do pi.dev expostos pela Extension API que
|
|
5
|
+
* podem ser sobrescritos sem reimplementar componentes inteiros:
|
|
6
|
+
*
|
|
7
|
+
* - Working message: "Trabalhando..." (em vez de "Working...")
|
|
8
|
+
* - Hidden thinking label: "Pensando..." (em vez de "Thinking...")
|
|
9
|
+
* - Título do terminal: "🐝 Apiário Dev"
|
|
10
|
+
*
|
|
11
|
+
* O footer NÃO é reescrito aqui. A API `ctx.ui.setFooter()` é tudo-ou-nada
|
|
12
|
+
* e o footer padrão expõe pwd, context window %, cache tokens e thinking
|
|
13
|
+
* level que perderíamos numa reimplementação só pra trocar `$` por `R$`.
|
|
14
|
+
* A correção desse ponto depende de suporte upstream a locale/currency no
|
|
15
|
+
* pi.dev — issue será aberta em earendil-works/pi-mono.
|
|
16
|
+
*/
|
|
17
|
+
const WORKING_MESSAGE = "Trabalhando...";
|
|
18
|
+
const HIDDEN_THINKING_LABEL = "Pensando...";
|
|
19
|
+
const TERMINAL_TITLE = "🐝 Apiário Dev";
|
|
20
|
+
export default function localizationExtension(pi) {
|
|
21
|
+
function apply(ctx) {
|
|
22
|
+
ctx.ui.setWorkingMessage(WORKING_MESSAGE);
|
|
23
|
+
ctx.ui.setHiddenThinkingLabel(HIDDEN_THINKING_LABEL);
|
|
24
|
+
ctx.ui.setTitle(TERMINAL_TITLE);
|
|
25
|
+
}
|
|
26
|
+
pi.on("session_start", async (_event, ctx) => {
|
|
27
|
+
apply(ctx);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=localization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localization.js","sourceRoot":"","sources":["../../src/extensions/localization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAC5C,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAExC,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAAgB;IAC5D,SAAS,KAAK,CAAC,GAAqB;QAClC,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAC1C,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;QACrD,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Placeholder da extensão de voz.
|
|
3
|
+
*
|
|
4
|
+
* No startup: se o pacote @juicesharp/rpiv-voice ainda não estiver instalado
|
|
5
|
+
* em ~/.config/apiario/packages/, registra /voice como placeholder que
|
|
6
|
+
* instala o pacote, recarrega a runtime e redireciona para o /voice real.
|
|
7
|
+
*
|
|
8
|
+
* Se já estiver instalado, não registra nada — o rpiv-voice original é
|
|
9
|
+
* carregado via additionalExtensionPaths e assume o comando.
|
|
10
|
+
*/
|
|
11
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
12
|
+
export default function voicePlaceholderExtension(pi: ExtensionAPI): void;
|
|
13
|
+
//# sourceMappingURL=voice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../src/extensions/voice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA2B,MAAM,iCAAiC,CAAC;AAqB7F,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAAE,EAAE,YAAY,QAWjE"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Placeholder da extensão de voz.
|
|
3
|
+
*
|
|
4
|
+
* No startup: se o pacote @juicesharp/rpiv-voice ainda não estiver instalado
|
|
5
|
+
* em ~/.config/apiario/packages/, registra /voice como placeholder que
|
|
6
|
+
* instala o pacote, recarrega a runtime e redireciona para o /voice real.
|
|
7
|
+
*
|
|
8
|
+
* Se já estiver instalado, não registra nada — o rpiv-voice original é
|
|
9
|
+
* carregado via additionalExtensionPaths e assume o comando.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, mkdirSync, writeFileSync } from "fs";
|
|
12
|
+
import { execSync } from "child_process";
|
|
13
|
+
import { PACKAGES_DIR, PACKAGES_PKG_JSON, isVoicePackageInstalled, } from "../config.js";
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Constants
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
const COMMAND = "voice";
|
|
18
|
+
const PKG_SPEC = "@juicesharp/rpiv-voice";
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Extension factory
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
export default function voicePlaceholderExtension(pi) {
|
|
23
|
+
// Se o pacote já está disponível, o rpiv-voice cuida do /voice — não
|
|
24
|
+
// registramos nada aqui para evitar dois comandos /voice.
|
|
25
|
+
if (isVoicePackageInstalled())
|
|
26
|
+
return;
|
|
27
|
+
pi.registerCommand(COMMAND, {
|
|
28
|
+
description: "🎤 Dictate text with your voice — instalação sob demanda",
|
|
29
|
+
handler: async (_args, ctx) => {
|
|
30
|
+
await installAndRedirect(ctx, pi);
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Install + reload + redirect
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
async function installAndRedirect(ctx, pi) {
|
|
38
|
+
ctx.ui.notify("🎤 Instalando módulo de voz…", "info");
|
|
39
|
+
try {
|
|
40
|
+
installPackage(ctx);
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
44
|
+
ctx.ui.notify(`❌ Falha ao instalar pacote de voz: ${msg}`, "error");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Verifica pós-instalação
|
|
48
|
+
if (!isVoicePackageInstalled()) {
|
|
49
|
+
ctx.ui.notify("❌ Pacote de voz instalado mas o entry point não foi encontrado.", "error");
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
ctx.ui.notify("✅ Módulo de voz instalado. Recarregando…", "info");
|
|
53
|
+
// Recarrega a runtime para que o rpiv-voice seja carregado via
|
|
54
|
+
// additionalExtensionPaths e registre seu /voice real.
|
|
55
|
+
await ctx.reload();
|
|
56
|
+
// Follow-up: executa o /voice real (agora registrado pelo rpiv-voice).
|
|
57
|
+
pi.sendUserMessage("/voice", { deliverAs: "followUp" });
|
|
58
|
+
}
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// npm install
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
function ensurePackagesDir() {
|
|
63
|
+
if (!existsSync(PACKAGES_DIR)) {
|
|
64
|
+
mkdirSync(PACKAGES_DIR, { recursive: true, mode: 0o700 });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function ensurePackageJson() {
|
|
68
|
+
ensurePackagesDir();
|
|
69
|
+
if (!existsSync(PACKAGES_PKG_JSON)) {
|
|
70
|
+
writeFileSync(PACKAGES_PKG_JSON, JSON.stringify({
|
|
71
|
+
name: "apiario-packages",
|
|
72
|
+
private: true,
|
|
73
|
+
type: "module",
|
|
74
|
+
description: "Pacotes instalados sob demanda pelo Apiário Dev harness",
|
|
75
|
+
}, null, 2), "utf-8");
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function installPackage(ctx) {
|
|
79
|
+
ensurePackageJson();
|
|
80
|
+
ctx.ui.notify("📦 Baixando @juicesharp/rpiv-voice…", "info");
|
|
81
|
+
execSync(`npm install ${PKG_SPEC}`, {
|
|
82
|
+
cwd: PACKAGES_DIR,
|
|
83
|
+
stdio: "pipe",
|
|
84
|
+
timeout: 120_000, // 2 minutos
|
|
85
|
+
encoding: "utf-8",
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=voice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.js","sourceRoot":"","sources":["../../src/extensions/voice.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apiario",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "CLI Harness — pi.dev TUI wrapper for Apiário Dev API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
"dev": "tsc --watch"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@earendil-works/pi-coding-agent": "0.
|
|
16
|
-
"@earendil-works/pi-ai": "0.
|
|
15
|
+
"@earendil-works/pi-coding-agent": "0.75.4",
|
|
16
|
+
"@earendil-works/pi-ai": "0.75.4",
|
|
17
17
|
"typebox": "1.1.38"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|