Skip to content

Commit

Permalink
Appkit and AIKit (#4018)
Browse files Browse the repository at this point in the history
  • Loading branch information
humandad committed Jun 19, 2024
1 parent 18c9586 commit 2b27cf8
Show file tree
Hide file tree
Showing 78 changed files with 1,337 additions and 33 deletions.
4 changes: 3 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
*
!apps
!libs/apps/uesio/aikit
!libs/apps/uesio/appkit
!libs/apps/uesio/builder
!libs/apps/uesio/core
!libs/apps/uesio/io
!libs/apps/uesio/studio
!libs/apps/uesio/sitekit
!libs/apps/uesio/studio
!dist/ui
!dist/vendor
2 changes: 2 additions & 0 deletions apps/platform/pkg/bundlestore/bundlestore.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ var systemBundles = map[string]bool{
"uesio/io": true,
"uesio/builder": true,
"uesio/sitekit": true,
"uesio/appkit": true,
"uesio/aikit": true,
}

func IsSystemBundle(namespace string) bool {
Expand Down
5 changes: 3 additions & 2 deletions apps/platform/pkg/meta/utility.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@ func NewBaseUtility(namespace, name string) *Utility {
type Utility struct {
BuiltIn `yaml:",inline"`
BundleableBase `yaml:",inline"`
Pack string `yaml:"pack,omitempty" json:"uesio/studio.pack"`
EntryPoint string `yaml:"entrypoint,omitempty" json:"uesio/studio.entrypoint"`
Pack string `yaml:"pack,omitempty" json:"uesio/studio.pack"`
EntryPoint string `yaml:"entrypoint,omitempty" json:"uesio/studio.entrypoint"`
Utilities []string `yaml:"utilities,omitempty" json:"uesio/studio.utilities"`
}

type UtilityWrapper Utility
Expand Down
6 changes: 6 additions & 0 deletions apps/platform/pkg/routing/deps.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,12 @@ func getDepsForUtilityComponent(key string, deps *preload.PreloadMetadata, sessi

addComponentPackToDeps(deps, namespace, utility.Pack, session)

for _, key := range utility.Utilities {
if utilityErr := getDepsForUtilityComponent(key, deps, session); utilityErr != nil {
return utilityErr
}
}

return nil

}
Expand Down
20 changes: 20 additions & 0 deletions apps/platform/seed/uesio/studio.app.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,26 @@
"uesio/core.uniquekey": "uesio"
}
},
{
"uesio/studio.name": "aikit",
"uesio/studio.fullname": "uesio/aikit",
"uesio/studio.description": "Integrate with AI",
"uesio/studio.color": "#a05195",
"uesio/studio.icon": "bolt",
"uesio/studio.user": {
"uesio/core.uniquekey": "uesio"
}
},
{
"uesio/studio.name": "appkit",
"uesio/studio.fullname": "uesio/appkit",
"uesio/studio.description": "Build great apps fast",
"uesio/studio.color": "#818cf8",
"uesio/studio.icon": "apps",
"uesio/studio.user": {
"uesio/core.uniquekey": "uesio"
}
},
{
"uesio/studio.name": "studio",
"uesio/studio.fullname": "uesio/studio",
Expand Down
18 changes: 18 additions & 0 deletions apps/platform/seed/uesio/studio.bundle.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,23 @@
"uesio/studio.major": 0,
"uesio/studio.minor": 0,
"uesio/studio.patch": 1
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/aikit"
},
"uesio/studio.description": "Tools for working with AI",
"uesio/studio.major": 0,
"uesio/studio.minor": 0,
"uesio/studio.patch": 1
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/appkit"
},
"uesio/studio.description": "Tools for building apps",
"uesio/studio.major": 0,
"uesio/studio.minor": 0,
"uesio/studio.patch": 1
}
]
16 changes: 16 additions & 0 deletions apps/platform/seed/uesio/studio.bundlelisting.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,21 @@
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/sitekit"
}
},
{
"uesio/studio.description": "Tools for working with AI",
"uesio/studio.status": "PUBLISHED",
"uesio/studio.approved": true,
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/aikit"
}
},
{
"uesio/studio.description": "Tools for building apps",
"uesio/studio.status": "PUBLISHED",
"uesio/studio.approved": true,
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/appkit"
}
}
]
20 changes: 20 additions & 0 deletions apps/platform/seed/uesio/studio.license.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,26 @@
"uesio/studio.active": true,
"uesio/studio.monthlyprice": 0
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/aikit"
},
"uesio/studio.applicensed": {
"uesio/core.uniquekey": "uesio/studio"
},
"uesio/studio.active": true,
"uesio/studio.monthlyprice": 0
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/appkit"
},
"uesio/studio.applicensed": {
"uesio/core.uniquekey": "uesio/studio"
},
"uesio/studio.active": true,
"uesio/studio.monthlyprice": 0
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/builder"
Expand Down
14 changes: 14 additions & 0 deletions apps/platform/seed/uesio/studio.licensetemplate.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,20 @@
"uesio/studio.autocreate": true,
"uesio/studio.monthlyprice": 0
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/aikit"
},
"uesio/studio.autocreate": true,
"uesio/studio.monthlyprice": 0
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/appkit"
},
"uesio/studio.autocreate": true,
"uesio/studio.monthlyprice": 0
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/builder"
Expand Down
12 changes: 12 additions & 0 deletions apps/platform/seed/uesio/studio.team.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,18 @@
},
"uesio/studio.name": "maintainers"
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/aikit"
},
"uesio/studio.name": "maintainers"
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/appkit"
},
"uesio/studio.name": "maintainers"
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/core"
Expand Down
44 changes: 44 additions & 0 deletions apps/platform/seed/uesio/studio.teammember.json
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,50 @@
"uesio/core.uniquekey": "zach"
}
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/aikit"
},
"uesio/studio.team": {
"uesio/core.uniquekey": "uesio/aikit:maintainers"
},
"uesio/studio.member": {
"uesio/core.uniquekey": "ben"
}
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/aikit"
},
"uesio/studio.team": {
"uesio/core.uniquekey": "uesio/aikit:maintainers"
},
"uesio/studio.member": {
"uesio/core.uniquekey": "zach"
}
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/appkit"
},
"uesio/studio.team": {
"uesio/core.uniquekey": "uesio/appkit:maintainers"
},
"uesio/studio.member": {
"uesio/core.uniquekey": "ben"
}
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/appkit"
},
"uesio/studio.team": {
"uesio/core.uniquekey": "uesio/appkit:maintainers"
},
"uesio/studio.member": {
"uesio/core.uniquekey": "zach"
}
},
{
"uesio/studio.app": {
"uesio/core.uniquekey": "uesio/core"
Expand Down
26 changes: 26 additions & 0 deletions libs/apps/uesio/aikit/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"extends": "../../../../.eslintrc.json",
"ignorePatterns": [
"!**/*",
"bundle/bots/*",
"bundle/componentpacks/*/*.js*"
],
"rules": {},
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"parserOptions": {
"project": ["libs/apps/uesio/aikit/tsconfig.*?.json"]
},
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}
7 changes: 7 additions & 0 deletions libs/apps/uesio/aikit/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# apps-io

This library was generated with [Nx](https://nx.dev).

## Running unit tests

Run `nx test apps-aikit` to execute the unit tests via [Jest](https://jestjs.io).
8 changes: 8 additions & 0 deletions libs/apps/uesio/aikit/bundle/bundle.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
name: uesio/aikit
dependencies:
uesio/builder:
version: v0.0.1
uesio/core:
version: v0.0.1
uesio/io:
version: v0.0.1
2 changes: 2 additions & 0 deletions libs/apps/uesio/aikit/bundle/componentpacks/main/pack.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
name: main
public: true
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { component, definition, api, context, styles } from "@uesio/ui"
import { useState } from "react"
import { getClaudeResponseHandler, Tool, ToolChoice } from "../claude/claude"
import { getClaudeResponseHandler, Tool, ToolChoice } from "./claude"
import { getClaudeArrayStreamHandler } from "./stream"

type Props = {
prompt: string
label: string
loadingLabel: string
onTextComplete?: (result: string) => void
onTextJSONArrayItem?: (item: unknown) => void
onTextDelta?: (delta: string) => void
onToolUse?: (tool: string, inputs: unknown) => void
onToolUseDelta?: (tool: string, delta: string) => void
Expand All @@ -27,9 +29,9 @@ const ClaudeInvokeButton: definition.UtilityComponent<Props> = (props) => {
prompt,
icon = "magic_button",
onTextComplete,
onTextDelta,
onToolUse,
onToolUseDelta,
onTextJSONArrayItem,
loadingLabel,
label,
tools,
Expand All @@ -42,6 +44,12 @@ const ClaudeInvokeButton: definition.UtilityComponent<Props> = (props) => {

const classes = styles.useUtilityStyleTokens(StyleDefaults, props)

const onTextDelta = onTextJSONArrayItem
? getClaudeArrayStreamHandler({
onItem: onTextJSONArrayItem,
})
: props.onTextDelta

const [isLoading, setLoading] = useState(false)

return (
Expand Down
6 changes: 6 additions & 0 deletions libs/apps/uesio/aikit/bundle/utilities/claudebutton.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
name: claudebutton
pack: main
entrypoint: utilities/claudebutton/claudebutton
utilities:
- uesio/io.image
- uesio/io.button
10 changes: 10 additions & 0 deletions libs/apps/uesio/aikit/jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/* eslint-disable */
export default {
displayName: "aikit",
preset: "../../../../jest.preset.js",
transform: {
"^.+\\.(t|j)sx?$": "@swc/jest",
},
moduleFileExtensions: ["ts", "tsx", "js", "jsx"],
coverageDirectory: "../../coverage/libs/apps/uesio/aikit",
}
41 changes: 41 additions & 0 deletions libs/apps/uesio/aikit/project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"name": "apps-uesio-aikit",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "libs/apps/uesio/aikit/bundle",
"projectType": "library",
"generators": {},
"targets": {
"build": {
"executor": "nx:run-commands",
"outputs": ["{projectRoot}/bundle/componentpacks/main/dist"],
"options": {
"commands": [
"uesio pack",
"npx tsc --noEmit --project ./tsconfig.lib.json"
],
"parallel": false,
"cwd": "libs/apps/uesio/aikit"
}
},
"watch": {
"executor": "nx:run-commands",
"options": {
"command": "uesio pack -w",
"cwd": "libs/apps/uesio/aikit"
}
},
"lint": {
"executor": "@nx/eslint:lint"
},
"test": {
"executor": "@nx/jest:jest",
"options": {
"jestConfig": "libs/apps/uesio/aikit/jest.config.ts",
"passWithNoTests": true
},
"outputs": ["{workspaceRoot}/coverage/libs/apps/uesio/aikit"]
}
},
"tags": [],
"implicitDependencies": ["cli", "ui"]
}
Loading

0 comments on commit 2b27cf8

Please sign in to comment.