diff --git a/.objectui-sha b/.objectui-sha index 3f4fc9b2b2..d38730c67e 100644 --- a/.objectui-sha +++ b/.objectui-sha @@ -1 +1 @@ -e30147510995881d51e79e4365203ecec5acb0b1 +8a3b351a5a320e6769a1616e85a6fd05aabd3279 diff --git a/examples/app-showcase/objectstack.config.ts b/examples/app-showcase/objectstack.config.ts index 005e4ea1b1..632a691dbe 100644 --- a/examples/app-showcase/objectstack.config.ts +++ b/examples/app-showcase/objectstack.config.ts @@ -28,7 +28,6 @@ import { allWebhooks } from './src/webhooks/index.js'; import { allHooks } from './src/hooks/index.js'; import { allJobs } from './src/jobs/index.js'; import { allEmails } from './src/emails/index.js'; -import { ShowcaseAssistantAgent, ProjectOpsSkill, allTools } from './src/agents/index.js'; import { allBooks } from './src/books/index.js'; import { allRoles, @@ -177,11 +176,6 @@ export default defineStack({ sharingRules: allSharingRules, policies: allPolicies, - // AI - agents: [ShowcaseAssistantAgent], - skills: [ProjectOpsSkill], - tools: allTools, - // Seed data data: ShowcaseSeedData, }); diff --git a/examples/app-showcase/package.json b/examples/app-showcase/package.json index 89d0679044..1a9196bc21 100644 --- a/examples/app-showcase/package.json +++ b/examples/app-showcase/package.json @@ -27,7 +27,6 @@ "@objectstack/connector-slack": "workspace:*", "@objectstack/driver-sql": "workspace:*", "@objectstack/runtime": "workspace:*", - "@objectstack/service-ai": "workspace:*", "@objectstack/spec": "workspace:*" }, "devDependencies": { diff --git a/examples/app-showcase/src/agents/index.ts b/examples/app-showcase/src/agents/index.ts deleted file mode 100644 index 836980111c..0000000000 --- a/examples/app-showcase/src/agents/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license. - -import { defineAgent, defineSkill, defineTool } from '@objectstack/spec'; - -/** Tool — look up a project by name. */ -export const FindProjectTool = defineTool({ - name: 'showcase_find_project', - label: 'Find Project', - description: 'Find a project by name.', - parameters: { - type: 'object', - properties: { name: { type: 'string', description: 'Project name' } }, - required: ['name'], - }, - requiresConfirmation: false, - active: true, - builtIn: false, -}); - -/** Tool — object-bound summary that needs confirmation before it runs. */ -export const SummarizeProjectTasksTool = defineTool({ - name: 'showcase_summarize_project_tasks', - label: 'Summarize Project Tasks', - description: 'Summarise the open tasks for a project, grouped by status.', - objectName: 'showcase_task', - parameters: { - type: 'object', - properties: { - project_id: { type: 'string', description: 'Project record id' }, - include_done: { type: 'boolean', description: 'Include completed tasks', default: false }, - }, - required: ['project_id'], - }, - requiresConfirmation: true, - active: true, - builtIn: false, -}); - -/** Skill — bundles the project tools. */ -export const ProjectOpsSkill = defineSkill({ - name: 'showcase_project_ops', - label: 'Project Operations', - description: 'Tools and prompts for working with projects and tasks.', - tools: ['showcase_find_project', 'showcase_summarize_project_tasks'], - active: true, -}); - -/** Agent — a delivery assistant for the showcase workspace. */ -export const ShowcaseAssistantAgent = defineAgent({ - name: 'showcase_assistant', - label: 'Delivery Assistant', - role: 'You are a helpful delivery-operations assistant.', - instructions: - 'Help users find projects, summarise task status, and flag at-risk projects. Ask before making destructive changes.', - active: true, - visibility: 'global', -}); - -export const allTools = [FindProjectTool, SummarizeProjectTasksTool]; diff --git a/examples/app-showcase/src/coverage.ts b/examples/app-showcase/src/coverage.ts index 921617dc36..e849383297 100644 --- a/examples/app-showcase/src/coverage.ts +++ b/examples/app-showcase/src/coverage.ts @@ -68,7 +68,6 @@ export const COVERAGE = { capabilityChains: { security: 'security/index.ts — roles + permission set (CRUD + FLS + RLS) + sharing + policy', automation: 'flows/index.ts (incl. approval nodes) + webhooks/index.ts + jobs/index.ts + emails/index.ts', - ai: 'agents/index.ts — agent + tool + skill', }, i18nThemingPortals: { coveredBy: 'translations/index.ts (en + zh-CN), themes/index.ts (light + dark), portals/index.ts', diff --git a/examples/app-showcase/test/seed.test.ts b/examples/app-showcase/test/seed.test.ts index 6f5040166e..f5709cd524 100644 --- a/examples/app-showcase/test/seed.test.ts +++ b/examples/app-showcase/test/seed.test.ts @@ -26,6 +26,6 @@ describe('showcase stack', () => { expect((stack.reports ?? []).length).toBe(3); expect((stack.flows ?? []).length).toBeGreaterThan(0); expect((stack.roles ?? []).length).toBe(3); - expect((stack.agents ?? []).length).toBe(1); + expect((stack.agents ?? []).length).toBe(0); // AI agents are an enterprise (service-ai) feature; the open showcase ships none }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3eb6f7c1c0..c85ad601c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -143,9 +143,6 @@ importers: '@objectstack/runtime': specifier: workspace:* version: link:../../packages/runtime - '@objectstack/service-ai': - specifier: workspace:* - version: link:../../packages/services/service-ai '@objectstack/spec': specifier: workspace:* version: link:../../packages/spec