Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/cloud-3383-chatbot-tool-label-draft-record.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@object-ui/i18n': patch
---

feat(i18n): `chatbot.tool.draft_record` label in all ten packs

The spec registry now lists the cloud ask agent's `draft_record` tool, so the chatbot's tool timeline can show it. Each pack gets a sentence in its own language ("Draft the new record" in English, "起草新记录" in Chinese), keeping the `toolLabels-locale-parity-7481` and `toolLabels-sentences-12724` tests green.

Clause-②: no
Metadata-protocol: none
10 changes: 10 additions & 0 deletions .changeset/cloud-3383-draft-record-tool-name.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@objectstack/spec': minor
---

feat(spec): `PLATFORM_TOOLS_BY_PACKAGE['service-ai-studio']` lists `draft_record`

Clause-②: yes (widening)
Metadata-protocol: added

The cloud `ask` agent gains `draft_record`, a signal tool that turns chat content into a validated new-record draft the user saves themselves (cloud#3383; the console card is #28104). The registry now lists the name, in its alphabetical order, so `PLATFORM_PROVIDED_TOOL_NAMES` carries it and a skill whose `tools[]` names it resolves under ADR-0109 reference integrity instead of being reported as a fictional tool (`ai-skill-tool-unresolved`). That is the whole widening: one more accepted `skill.tools[]` value. No schema shape changes, no export is added or removed.
15 changes: 15 additions & 0 deletions packages/lint/src/validate-ai-tool-references.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,21 @@ describe('validate-ai-tool-references', () => {
expect(control[0].message).toContain('list_package_docs');
});

/**
* The `ask` agent's new-record draft signal (cloud#3383, ui half #28104): a
* skill naming `draft_record` resolves; a near name nobody registers does not.
*/
it('resolves the service-ai-studio record-draft signal', () => {
expect(validateAiToolReferences({ skills: [{ name: 's', tools: ['draft_record'] }] })).toEqual([]);

const control = validateAiToolReferences({
skills: [{ name: 's', tools: ['draft_record', 'draft_records'] }],
});
expect(control).toHaveLength(1);
expect(control[0].path).toBe('skills[0].tools[1]');
expect(control[0].message).toContain('draft_records');
});

it('reports stable paths and tolerates junk shapes', () => {
const stack = {
skills: [{ name: 's', tools: ['query_records', 'nope_tool'] }],
Expand Down
7 changes: 5 additions & 2 deletions packages/spec/src/system/constants/platform-tool-names.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,10 @@ export const PLATFORM_TOOLS_BY_PACKAGE: Readonly<Record<string, readonly string[
],
/**
* `@objectstack/service-ai-studio` (cloud) — the shared schema-reader pair
* (`describe_object`/`list_objects`) plus the `build` authoring product's
* metadata/blueprint/package/verify tools.
* (`describe_object`/`list_objects`), the `build` authoring product's
* metadata/blueprint/package/verify tools, and the `ask` agent's hand-off
* signals (`suggest_builder`, `open_record`, `draft_record`), which write
* nothing.
*/
'service-ai-studio': [
'add_field',
Expand All @@ -70,6 +72,7 @@ export const PLATFORM_TOOLS_BY_PACKAGE: Readonly<Record<string, readonly string[
'delete_field',
'describe_metadata',
'describe_object',
'draft_record',
'get_active_package',
'get_authoring_rules',
'get_metadata_schema',
Expand Down
1 change: 1 addition & 0 deletions ui/packages/i18n/src/locales/ar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4036,6 +4036,7 @@ const ar = {
delete_field: "حذف أحد الحقول",
describe_metadata: "مراجعة البيانات الوصفية",
describe_object: "مراجعة بنية الكائن",
draft_record: "صياغة مسودة السجل الجديد",
get_active_package: "التحقق من الحزمة النشطة",
get_authoring_rules: "الاطلاع على قواعد التأليف",
get_metadata_schema: "الاطلاع على تنسيق البيانات الوصفية",
Expand Down
1 change: 1 addition & 0 deletions ui/packages/i18n/src/locales/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3743,6 +3743,7 @@ const de = {
delete_field: "Ein Feld löschen",
describe_metadata: "Die Metadaten ansehen",
describe_object: "Die Struktur des Objekts ansehen",
draft_record: "Den neuen Datensatz entwerfen",
get_active_package: "Das aktive Paket prüfen",
get_authoring_rules: "Die Erstellungsregeln nachlesen",
get_metadata_schema: "Das Metadatenformat nachlesen",
Expand Down
1 change: 1 addition & 0 deletions ui/packages/i18n/src/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4514,6 +4514,7 @@ const en = {
delete_field: 'Delete a field',
describe_metadata: 'Look at the metadata',
describe_object: 'Look at the object structure',
draft_record: 'Draft the new record',
get_active_package: 'Check the active package',
get_authoring_rules: 'Read the authoring rules',
get_metadata_schema: 'Read the metadata format',
Expand Down
1 change: 1 addition & 0 deletions ui/packages/i18n/src/locales/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3817,6 +3817,7 @@ const es = {
delete_field: "Eliminar un campo",
describe_metadata: "Revisar los metadatos",
describe_object: "Revisar la estructura del objeto",
draft_record: "Redactar el nuevo registro",
get_active_package: "Comprobar el paquete activo",
get_authoring_rules: "Consultar las reglas de autoría",
get_metadata_schema: "Consultar el formato de los metadatos",
Expand Down
1 change: 1 addition & 0 deletions ui/packages/i18n/src/locales/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3813,6 +3813,7 @@ const fr = {
delete_field: "Supprimer le champ",
describe_metadata: "Examiner les métadonnées",
describe_object: "Examiner la structure de l’objet",
draft_record: "Préparer la nouvelle fiche",
get_active_package: "Vérifier le paquet actif",
get_authoring_rules: "Consulter les règles d’écriture",
get_metadata_schema: "Consulter le format des métadonnées",
Expand Down
1 change: 1 addition & 0 deletions ui/packages/i18n/src/locales/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3745,6 +3745,7 @@ const ja = {
delete_field: "項目を削除する",
describe_metadata: "メタデータの内容を確認する",
describe_object: "オブジェクトの構造を確認する",
draft_record: "新しいレコードの下書きを作る",
get_active_package: "現在のパッケージを確認する",
get_authoring_rules: "作成ルールを読む",
get_metadata_schema: "メタデータの形式を調べる",
Expand Down
1 change: 1 addition & 0 deletions ui/packages/i18n/src/locales/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3742,6 +3742,7 @@ const ko = {
delete_field: "필드 삭제하기",
describe_metadata: "메타데이터 내용 확인하기",
describe_object: "오브젝트 구조 살펴보기",
draft_record: "새 레코드 초안 작성하기",
get_active_package: "현재 패키지 확인하기",
get_authoring_rules: "작성 규칙 읽기",
get_metadata_schema: "메타데이터 형식 살펴보기",
Expand Down
1 change: 1 addition & 0 deletions ui/packages/i18n/src/locales/pt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3812,6 +3812,7 @@ const pt = {
delete_field: "Excluir um campo",
describe_metadata: "Revisar os metadados",
describe_object: "Revisar a estrutura do objeto",
draft_record: "Rascunhar o novo registro",
get_active_package: "Verificar o pacote ativo",
get_authoring_rules: "Consultar as regras de autoria",
get_metadata_schema: "Consultar o formato dos metadados",
Expand Down
1 change: 1 addition & 0 deletions ui/packages/i18n/src/locales/ru.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3900,6 +3900,7 @@ const ru = {
delete_field: "Удалить одно поле",
describe_metadata: "Изучить метаданные",
describe_object: "Изучить структуру объекта",
draft_record: "Подготовить черновик новой записи",
get_active_package: "Проверить активный пакет",
get_authoring_rules: "Прочитать правила разработки",
get_metadata_schema: "Изучить формат метаданных",
Expand Down
1 change: 1 addition & 0 deletions ui/packages/i18n/src/locales/zh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3932,6 +3932,7 @@ const zh = {
delete_field: '删除一个字段',
describe_metadata: '查看元数据的内容',
describe_object: '查看对象的结构',
draft_record: '起草新记录',
get_active_package: '确认当前应用包',
get_authoring_rules: '查阅编写规范',
get_metadata_schema: '查阅元数据的格式',
Expand Down
Loading