跳到内容
CADCAMFUN
文档

文档

软件包和应用程序

工作空间名称、公共入口点、消费者和实施责任。

从英文自动翻译。 查看英文原文

域库

@cadcamfun/core

packages/core/src/index.ts 导出平面和下方的 CAD 符号 cad, CAM 下 cam,以及下面的绘图函数 drawing。它包含草图、实体建模、曲面细分、绘图交换、加工操作、后处理器、G 代码分析和验证。桌面直接消费这个包进行交互操作; sidecar 在 HTTP 和辅助适配器后面使用它。

@cadcamfun/vcs

packages/vcs/src/index.ts 公开项目快照、对象、引用、差异、合并和 GitHub 传输功能。它没有运行时包依赖性。存储和代理用户解析属于 sidecar 的 VCS 存储库和服务。

@cadcamfun/workflow

packages/workflow/src/index.ts 导出工作流模式、解析、触发器匹配和执行。这取决于效果。 sidecar 注册需要通知、项目历史记录或 AI 访问的步骤;工作流步骤名称仅当其实现在运行程序中注册时才可用。

合约、存储和人工智能

@cadcamfun/api

根条目 packages/api/src/index.ts 组成 HttpApi 组和共享架构。这 @cadcamfun/api/sdk export points to the generated Promise SDK. The source tree also contains Effect clients and the full contract-based ApiClient。 API 使用者应选择代表他们所需端点的客户端界面。

@cadcamfun/db

根导出提供效果 Database 服务和模式命名空间。 @cadcamfun/db/schema 暴露 Drizzle 表。 SQLite 访问、迁移、备份规划和模式所有权都在这里。大多数应用程序查询通过该服务从 sidecar 存储库运行;本地Web Studio为其独立的Bun进程导入表模式。

@cadcamfun/ai

packages/ai/src/index.ts 公开提供商服务、嵌入式 nikcli 集成、操作目录、应用程序工具、提示和技能。 Sidecar 提供实时项目、几何、加工、文件、历史和工作流程适配器。该软件包取决于 API 和核心,并固定 nikcli 和 AI SDK 版本。

扩展包

@cadcamfun/plugin-sdk

SDK 的 src/index.ts 是公共应用程序插件入口点。它定义了清单和功能合约以及插件创作助手。运行时主机位于 apps/sidecar/src/plugins; sDK本身不是宿主进程。

@cadcamfunv2/cadcamfun-nikcli-plugin

packages/nikcli-plugin/src/index.ts 导出独立的 nikcli 桥。与大多数工作区不同,它配置为公共 npm 发布,当前版本为 0.1.0。它从正在运行的 CADCAMFUN 应用程序发现操作,并通过经过身份验证的 HTTP 调用它们。它不嵌入 CAD 内核或独立的动作目录。

@cadcamfun/plugin-sdk 实现插件 API 主要版本 1。插件标识符是 3–128 字符的反向 DNS 名称,例如 com.example.gear-generator,版本如下 major.minor.patch 带有可选的预发布后缀(packages/plugin-sdk/src/manifest.ts).

HTTP 客户端生成器

@cadcamfun/httpapi-codegen 导出其编译器和发射器 packages/httpapi-codegen/src/index.ts. compile 将 Effect HttpApi 反映到契约模型中。 emitPromise 创建 Promise SDK; emitEffect 和 emitEffectImported 支持效果输出。导入的变体引用现有的合同模式。

其他导出包括兼容性发射器、传输错误映射、 write, 和 generate。不受支持的合约形状引发 GenerationError。应用程序生成脚本显式记录端点排除,以实现共享和仅限 Promise 的限制。

packages/api/scripts/generate-clients.ts 写 src/sdk/generated 和 src/client/generated。它的漂移检查会生成一个临时目录,并将文件名和内容与提交的输出进行比较。

存储库根
bun run generate
bun run generate:check

生成的输出位于 packages/api/src/client/generated 和 packages/api/src/sdk/generated。跑步 bun run generate 更改合同后,以及 bun run generate:check 确认提交的输出是最新的。

应用程序工作区

@cadcamfun/sidecar — apps/sidecar
src/main.ts 是可执行服务器条目; src/layers.ts 有线服务和服务团体。包启动脚本直接运行Bun。编译为本机 sidecar 由根构建脚本管理。
@cadcamfun/desktop — apps/desktop
SolidJS/Vite 前端加上 Tauri Rust 应用程序 src-tauri。包裹的 build 脚本构建前端;原生打包需要 Tauri 和 sidecar 资源。
@cadcamfun/mobile — apps/mobile
Expo Router 入口点、配套 HTTP/本机传输、安全配对状态和移动 UI。它的构建脚本导出 iOS JavaScript 包;生成本机应用程序需要本机构建命令。

文档、助理和 Studio

@cadcamfun/web 包含 Astro 页面、共享文档组件和站点内容索引。侧边栏声明于 src/data/docsSidebar.ts; src/data/docsIndex.ts 保存相同路线的检索摘要和关键字。每个文档页面都会预呈现其文章。

GET /llm 将文档页面列为 Markdown 链接。 GET /llm?path=/docs/cam 以 GitHub 风格的 Markdown 形式返回相应的渲染文章。添加 format=prompt 以获得文档提示。未知路径返回 404;转换失败会返回错误状态。 Markdown 管道剥离了导航、脚本、样式和控件。

POST /api/docs-assistant 检索最多三个索引页面并通过 Workers AI 或配置的 nikcli 后端传输答案。本地 Astro 开发禁用远程绑定,因此模型后端必须可用于生成。可选的 SESSIONS KV 绑定可实现尽力而为的每个 IP 速率限制;选修的 ARTIFACTS 存储支持可共享生成的指南。

bun run --filter @cadcamfun/web dev 启动 Astro 和 Studio API。 start 独自经营Astro; studio 仅启动 Bun Studio API。工作室精选 CADCAMFUN_DB, 然后 DATABASE_URL 带有可选的 file: 删除前缀,然后存储库的 data/cadcamfun.db。该文件必须已存在并包含应用程序架构。

Studio 接受现有用户的电子邮件和密码,并使用以下命令验证存储的密码 Bun.password,并使用纯 HTTP cookie 写入为期 7 天的数据库会话。其概述向经过身份验证的用户返回安装范围内的计数和最近的项目。生产 /studio/api/* 路线返回503;部署的文档不会打开本地 SQLite 数据库。

存储库根
bun run --filter @cadcamfun/web start
bun test packages/web/test
bun run --filter @cadcamfun/web typecheck
bun run --filter @cadcamfun/web build

选择积分表面

需要表面调用者提供什么
无需持久性即可计算几何@cadcamfun/core验证几何形状和操作输入;所有权和文档保存保留在内核之外。
调用完整的类型化 HTTP 合约ApiClient 从 @cadcamfun/apiSidecar 基本 URL、应用程序令牌和效果运行时/层。
使用基于 Promise 的生成方法@cadcamfun/api/sdkSDK客户端选项和端点输入;首先检查生成遗漏。
提供应用能力@cadcamfun/plugin-sdk支持的清单、兼容的模块导出和授予的功能。
从独立的 nikcli 推动项目行动@cadcamfunv2/cadcamfun-nikcli-plugin正在运行的应用程序 URL、范围桥令牌和选定的项目。
阅读工具中的文档/llm?path=/docs/…已知的文档路径;这不会调用 CAD/CAM 项目操作。

大多数库包都是导出 TypeScript 源代码的私有工作区;它们出现在 monorepo 中并不意味着单独发布的 npm 发行版。 nikcli 桥具有明确的发布元数据。使用 HTTP 参考 用于应保持独立于内部封装布局的集成。

工作区一览

工作空间包裹内部部门源文件线路测试文件内容
packages/core@cadcamfun/core—30770,774106几何内核: cad/ (80 个文件), cam/ (110), drawing/ (7)
packages/ai@cadcamfun/aiaPI、核心19622,57983助手:动作、嵌入式主机、提示、技能、工具
packages/api@cadcamfun/api核心,httpapi-codegen6418,3889HttpApi 合约、错误、Effect 和 Promise 客户端
packages/db@cadcamfun/db—71,7302SQLite + Drizzle、迁移、备份
packages/vcs@cadcamfun/vcs—101,1331内容寻址的项目历史和合并
packages/workflow@cadcamfun/workflow—53201工作流文件架构和运行语义
packages/plugin-sdk@cadcamfun/plugin-sdk核99522插件清单、功能、测试主机
packages/httpapi-codegen@cadcamfun/httpapi-codegen—134,3302HttpApi 合约的客户端生成器
packages/nikcli-plugin@cadcamfunv2/cadcamfun-nikcli-plugin—53592将 CADCAMFUN 暴露给 nikcli 代理的插件
packages/web@cadcamfun/web数据库8412,9913本文档站点、Studio、文档助手
apps/sidecar@cadcamfun/sidecarai、api、core、db、plugin-sdk、vcs、工作流程17220,79773本地 HTTP 服务器: http/ (34), repos/ (24), services/ (29)
apps/desktop@cadcamfun/desktopaPI、核心55785,579104SolidJS 网页视图 (features/ 280 文件)+ Rust shell src-tauri/
apps/mobile@cadcamfun/mobile应用程序编程接口797,6377世博会 iOS 伴侣

计数是在 git 中跟踪的 TypeScript、TSX、Rust 和 Astro 文件,在此分支上进行测量;测试文件是 *.test.ts(x)。内部依赖省略 @cadcamfun/ 前缀。

依赖图

桌面边车移动的 数据库应用程序编程接口人工智能vCS工作流程插件-sdk 核httpapi-codegen

箭头从工作区指向它导入的内容。 core 没有内部依赖性,因此可以在没有服务器的情况下测试和重用几何图形和 CAM。只有 sidecar 接触数据库;桌面和移动应用程序通过以下方式获取数据 api. plugin-sdk 还取决于 core (未绘制)。

每个工作区的脚本

工作空间脚本
根typecheck, test, build, build:sidecar, build:desktop, desktop:dev, generate, generate:check, db:generate, db:migrate
packages/apitypecheck, coverage, generate, generate:check
packages/dbtypecheck, generate, migrate
packages/webdev, start, studio, build, preview, deploy, astro, check:freshness, check:docs-index, typecheck, generate:api-reference, check:api-reference
apps/desktoptypecheck, dev, build, stub-sidecar, tauri, tauri:dev, tauri:build
apps/mobilestart, ios, dev, ios:build, ios:release, ios:dev, web, native:generate, typecheck, build, test
apps/sidecartypecheck, start
其他套餐typecheck

根 typecheck 运行每个工作区的 typecheck 通过turbo,然后检查根项目。根 test 运行 bun test packages apps scripts.

在 3D

包及其工作区依赖项 拖动进行轨道旋转·滚动进行缩放·右键拖动进行平移
来自 package.json 文件的所有 13 工作区包;每行都是一个工作区:* 依赖项(总共 17)。行是依赖项深度:前面没有工作区依赖项的包,后面是依赖于其中 8 的 sidecar。橙色框是应用程序。