@things-factory/ai-assistant 10.1.165 → 10.1.167
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/client/components/panel-aria.test.ts +1 -1
- package/dist-client/components/panel-aria.test.js +1 -1
- package/dist-client/components/panel-aria.test.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/service/assistant-mode/registry.js +1 -1
- package/dist-server/service/assistant-mode/registry.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/server/service/assistant-mode/registry.ts +1 -1
- package/translations/ko.json +4 -4
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* 패널 안에 고르는 축이 둘일 때 — 둘 다 「탭」이라고 말하지 않는다.
|
|
3
3
|
*
|
|
4
4
|
* ── 왜 이 시험이 있나 ──────────────────────────────────────────────────────
|
|
5
|
-
* 대화
|
|
5
|
+
* 대화 선택기를 칩 줄로 만들면서 `role="tablist"` 를 달았다. 바로 아래가 세션 탭이고 그쪽도 tablist
|
|
6
6
|
* 라서, 화면 낭독기로 들으면 「탭 목록, 대화」 다음에 「탭 목록, Conversation history」 가 이어졌다.
|
|
7
7
|
* 고르는 축이 둘인데 둘 다 같은 이름으로 불린다. 눈으로 보면 멀쩡해서 화면에서는 안 잡힌다 —
|
|
8
8
|
* UX 레인이 소스를 읽고 잡았다(2026-09-18).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* 패널 안에 고르는 축이 둘일 때 — 둘 다 「탭」이라고 말하지 않는다.
|
|
3
3
|
*
|
|
4
4
|
* ── 왜 이 시험이 있나 ──────────────────────────────────────────────────────
|
|
5
|
-
* 대화
|
|
5
|
+
* 대화 선택기를 칩 줄로 만들면서 `role="tablist"` 를 달았다. 바로 아래가 세션 탭이고 그쪽도 tablist
|
|
6
6
|
* 라서, 화면 낭독기로 들으면 「탭 목록, 대화」 다음에 「탭 목록, Conversation history」 가 이어졌다.
|
|
7
7
|
* 고르는 축이 둘인데 둘 다 같은 이름으로 불린다. 눈으로 보면 멀쩡해서 화면에서는 안 잡힌다 —
|
|
8
8
|
* UX 레인이 소스를 읽고 잡았다(2026-09-18).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel-aria.test.js","sourceRoot":"","sources":["../../client/components/panel-aria.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC;SAChD,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;AACjC,CAAC;AAED,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE7F,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D;;;;OAIG;IACH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAA;IAE1E,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,oGAAoG,CAAC,CAAA;QAC5H,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,4FAA4F,CAAC,CAAA;IACtH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["/*\n * 패널 안에 고르는 축이 둘일 때 — 둘 다 「탭」이라고 말하지 않는다.\n *\n * ── 왜 이 시험이 있나 ──────────────────────────────────────────────────────\n * 대화
|
|
1
|
+
{"version":3,"file":"panel-aria.test.js","sourceRoot":"","sources":["../../client/components/panel-aria.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC;SAChD,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;AACjC,CAAC;AAED,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE7F,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D;;;;OAIG;IACH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAA;IAE1E,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,oGAAoG,CAAC,CAAA;QAC5H,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,4FAA4F,CAAC,CAAA;IACtH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["/*\n * 패널 안에 고르는 축이 둘일 때 — 둘 다 「탭」이라고 말하지 않는다.\n *\n * ── 왜 이 시험이 있나 ──────────────────────────────────────────────────────\n * 대화 선택기를 칩 줄로 만들면서 `role=\"tablist\"` 를 달았다. 바로 아래가 세션 탭이고 그쪽도 tablist\n * 라서, 화면 낭독기로 들으면 「탭 목록, 대화」 다음에 「탭 목록, Conversation history」 가 이어졌다.\n * 고르는 축이 둘인데 둘 다 같은 이름으로 불린다. 눈으로 보면 멀쩡해서 화면에서는 안 잡힌다 —\n * UX 레인이 소스를 읽고 잡았다(2026-09-18).\n *\n * 탭 축은 세션 toolbar(`assistant-session-toolbar.ts`)가 갖는다. 이 패널은 자기 탭 축을 세우지 않는다.\n * ARIA 탭은 좌우 화살표 이동과 `tabpanel` 이 함께 있어야 성립하는데, 여기에는 둘 다 없다.\n *\n * 주석은 벗겨 낸다 — 위 문단에 적힌 `role=\"tablist\"` 가 검사를 통과시키면 그 검사는 자기 산문을 센다.\n */\nimport { readFileSync } from 'node:fs'\nimport { join } from 'node:path'\n\nfunction bare(name: string): string {\n return readFileSync(join(__dirname, name), 'utf-8')\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/^\\s*\\/\\/.*$/gm, '')\n}\n\ndescribe('the panel does not raise a second tab axis', () => {\n it('★ assistant-chat 는 tablist/tab 을 선언하지 않는다 — 그 축은 세션 toolbar의 것이다', () => {\n const found = [...bare('assistant-chat.ts').matchAll(/role=\"(tablist|tab)\"/g)].map(m => m[1])\n\n expect(found).toEqual([])\n })\n\n it('세션 toolbar는 그 축을 계속 갖는다 — 위 시험이 축을 없애라는 뜻으로 읽히지 않도록', () => {\n expect(bare('assistant-session-toolbar.ts')).toContain('role=\"tablist\"')\n })\n})\n\n/*\n * 첨부는 **되는 것만** 권한다 — ADR-0071 보탬(2026-09-18).\n *\n * `.json` · `.txt` · `.csv` 도 받고 있었는데, 그 파일들은 실려만 가고 모델에 붙는 코드가 없었다. 사람이\n * CSV 를 붙이고 물으면 파일 칩이 뜨고 답도 왔다 — 그 답은 파일을 본 적이 없고 오류도 안 났다.\n * 이미지는 `hostContext.image` 로 사람 턴에 붙는 길이 있다.\n */\ndescribe('the attach control offers only what has a path', () => {\n /*\n * 2026-09-25 — 받을 것을 **모드가 선언한다**(design/ai/shared-dock.md §9-1). 이미지 · 글 파일 모두 이제 모델에\n * 닿는 길이 있다(보낸 턴에는 원문, 그 뒤에는 readChatAttachment). 그래서 규칙이 「이미지만」에서 「모드가 선언한\n * 것만, 선언이 없으면 아무것도」로 넓어졌다. 보드 문(boardAIChat)은 모드 정책을 모르므로 이미지 길 그대로다.\n */\n const source = readFileSync(join(__dirname, 'assistant-chat.ts'), 'utf-8')\n\n it('★ 중립 문은 모드의 선언만 받는다 — 선언이 없으면 첨부 단추가 없다', () => {\n expect(source).toMatch(/accept=\\$\\{this\\.usesAttachmentPolicy \\? acceptOf\\(this\\.modeView\\?\\.attachments\\) : 'image\\/\\*'\\}/)\n expect(source).toMatch(/return !this\\.usesAttachmentPolicy \\|\\| !!this\\.modeView\\?\\.attachments\\?\\.kinds\\?\\.length/)\n })\n\n it('보드 문은 이미지 길 그대로다', () => {\n expect(source).toMatch(/: 'image\\/\\*'\\}/)\n })\n})\n"]}
|