aiakiv 0.3.0 → 0.3.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/bind.js CHANGED
@@ -18,7 +18,7 @@ import { dirname, join, resolve } from "node:path";
18
18
  import { CLAUDE_FOLDER_SETTINGS, FOLDER_CONFIG } from "./clients/types.js";
19
19
  import { addToJsonArray, jsonServers, readJsonObject, upsertJsonServer } from "./config/json.js";
20
20
  import { upsertCodexServer } from "./config/toml.js";
21
- import { exchangeCode, handoffUrl, HANDOFF_TIMEOUT_MS, newState, scopeList, startLoopback, supersededNotice, } from "./handoff.js";
21
+ import { exchangeCode, handoffUrl, HANDOFF_TIMEOUT_MS, newState, oldKeysKeptNotice, scopeList, startLoopback, supersededNotice, } from "./handoff.js";
22
22
  import { installFolderSkills } from "./skills.js";
23
23
  import { folderServerName, folderServerNameWithoutId, projectBinding } from "./snippet.js";
24
24
  import { canonicalMcpUrl, controlBase, mcpBase } from "./urls.js";
@@ -244,6 +244,9 @@ async function bindKey(ctx, client, project, dir, opts) {
244
244
  const sup = supersededNotice(res.superseded);
245
245
  if (sup)
246
246
  ctx.out(sup);
247
+ const kept = oldKeysKeptNotice(res.old_keys_kept);
248
+ if (kept)
249
+ ctx.out(kept);
247
250
  ctx.out(`${replaced ? "바꿨습니다" : "더했습니다"}: ${file}`);
248
251
  ctx.out(` 서버 이름 ${name}`);
249
252
  ctx.out(` 주소 ${mcpUrl}`);
package/dist/console.js CHANGED
@@ -14,7 +14,7 @@ import { join, resolve } from "node:path";
14
14
  import { ensureGitIgnored, resolveDir } from "./bind.js";
15
15
  import { callConsole, classify, EXIT, failureLines, findConsoleKey, isObj, keyLabel, NO_KEY_MESSAGE, } from "./consoleApi.js";
16
16
  import { CONSOLE_KEY_DIR, CONSOLE_KEY_FILE, expiryText, writeConsoleKeyFile } from "./consoleKeyFile.js";
17
- import { exchangeCode, handoffUrl, HANDOFF_TIMEOUT_MS, newState, scopeList, startLoopback, supersededNotice, } from "./handoff.js";
17
+ import { exchangeCode, handoffUrl, HANDOFF_TIMEOUT_MS, newState, oldKeysKeptNotice, scopeList, startLoopback, supersededNotice, } from "./handoff.js";
18
18
  import { renderDescribe, renderResult } from "./render.js";
19
19
  import { controlBase } from "./urls.js";
20
20
  /** 별칭은 이 넷뿐이다(§5.3). 나머지는 이름 그대로 보낸다. */
@@ -204,6 +204,9 @@ async function consoleKey(ctx, dir, opts) {
204
204
  const sup = supersededNotice(res.superseded, "account");
205
205
  if (sup)
206
206
  ctx.out(sup);
207
+ const kept = oldKeysKeptNotice(res.old_keys_kept);
208
+ if (kept)
209
+ ctx.out(kept);
207
210
  ctx.out(`썼습니다: ${file}`);
208
211
  let ignore;
209
212
  try {
package/dist/handoff.js CHANGED
@@ -203,3 +203,14 @@ export function supersededNotice(n, kind = "project") {
203
203
  ? `앞선 계정 키 ${count}개${idText}를 폐기했습니다.`
204
204
  : `이전 키 ${count}개${idText}를 폐기했습니다. 다른 폴더에 같은 프로젝트 키를 넣어 두었다면 그 폴더도 다시 bind 하세요.`;
205
205
  }
206
+ /** 끊지 않고 남겨 둔 옛 키가 있다는 안내. 1 이상의 정수가 아니면 null(줄을 내지 않는다).
207
+ * 서버는 팀 키, 개인 키, 예전 버전의 키를 이번 프로젝트의 키와 구분할 수 없을 때 끊지 않고 그 수만 알린다.
208
+ * 응답에 키 id 는 없으므로 수만 적는다. 폐기 방법은 웹 콘솔의 API 키 관리 화면과 엔진의 aiakiv-admin 뿐이다. */
209
+ export function oldKeysKeptNotice(n) {
210
+ if (!Number.isSafeInteger(n) || n < 1)
211
+ return null;
212
+ return `저장 위치가 같은 옛 키 ${n}개는 폐기하지 않아 아직 쓸 수 있습니다. 팀 키, 개인 키 또는 예전 버전에서 받은 키라 ` +
213
+ "어느 프로젝트의 키인지 구분할 수 없기 때문입니다. 쓰지 않는 키라면 웹 콘솔의 API 키 관리 화면에서 프로젝트 칸과 " +
214
+ "만든 시각을 확인한 뒤 폐기할 수 있습니다. 엔진 관리자는 aiakiv-admin key list 와 key revoke 로도 폐기할 수 있습니다. " +
215
+ "폐기한 키를 쓰던 프로그램은 동작을 멈춥니다.";
216
+ }
package/dist/setup.js CHANGED
@@ -21,7 +21,7 @@ import { ConfigError, jsonServers, readJsonObject, upsertJsonServer } from "./co
21
21
  import { expiryText } from "./consoleKeyFile.js";
22
22
  import { classifyEntry } from "./doctor.js";
23
23
  import { readTextIfExists, writeFileAtomic } from "./fsutil.js";
24
- import { exchangeCode, handoffUrl, HANDOFF_TIMEOUT_MS, newState, scopeList, startLoopback, supersededNotice, } from "./handoff.js";
24
+ import { exchangeCode, handoffUrl, HANDOFF_TIMEOUT_MS, newState, oldKeysKeptNotice, scopeList, startLoopback, supersededNotice, } from "./handoff.js";
25
25
  import { probeSaveTarget } from "./mcpProbe.js";
26
26
  import { downloadSkillPack, SKILL_NAMES, SKILLS_REPO, skillsGlobalManualCommand, writeSkillsTo } from "./skills.js";
27
27
  import { canonicalMcpUrl, controlBase } from "./urls.js";
@@ -145,6 +145,9 @@ async function newKeyByHandoff(ctx, opts, url) {
145
145
  const sup = supersededNotice(res.superseded, "dynamic");
146
146
  if (sup)
147
147
  ctx.out(sup);
148
+ const kept = oldKeysKeptNotice(res.old_keys_kept);
149
+ if (kept)
150
+ ctx.out(kept);
148
151
  if (typeof res.mcp_url === "string" && res.mcp_url && res.mcp_url !== url) {
149
152
  ctx.err(`참고: 서버가 알려 준 MCP 주소(${res.mcp_url})와 설정에 쓰는 주소(${url})가 다릅니다. ` +
150
153
  "AIAKIV_MCP_URL 이 맞는지 확인하세요.");
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // package.json 의 version 과 같아야 한다(tests/cli.test.mjs 가 확인).
2
- export const VERSION = "0.3.0";
2
+ export const VERSION = "0.3.1";
3
3
  // 이 CLI 판이 `aiakiv enterprise precheck` 에서 쓰는 유료 기업판 엔진 이미지 판(aiakiv/engine-enterprise:<판>).
4
4
  // K2G packaging/selfhost/build.sh 가 `<이미지>:<판>` 으로 태그를 붙이고(앞에 v 없음), 엔진 판은 K2G
5
5
  // pyproject.toml 의 version(이미지의 AIAKIV_ENGINE_VERSION)이다. 엔진 판을 올리면 이 값도 같이 올린다.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiakiv",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "AiAkiv CLI: pin a folder to an AiAkiv project (connection, folder skills, settings), check it, and run console actions and a dashboard from the shell.",
5
5
  "license": "MIT",
6
6
  "type": "module",