build(release): rename jane-ai packaging surfaces\n\n- Rename Makefile outputs, launcher artifact names, and frontend build commands toward jane-ai\n- Update Dockerfiles, GoReleaser config, launcher assets, and backend startup metadata to ship jane-ai branding\n- Refresh gitignore and workflow image naming for the new jane-ai artifact surface\n- Documentation updated in ObsidianVault/My_Vault/03-Projects/jane-ai/01-Working and 07-Sessions/28-03-26\n- Tests passed for pkg/runtimepaths and pkg/auth; targeted rg checks passed for the touched release/build files
This commit is contained in:
parent
da25deeae0
commit
ef5a339b4c
16 changed files with 99 additions and 98 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
.git
|
.git
|
||||||
.gitignore
|
.gitignore
|
||||||
build/
|
build/
|
||||||
.picoclaw/
|
.jane-ai/
|
||||||
config/
|
config/
|
||||||
.env
|
.env
|
||||||
.env.example
|
.env.example
|
||||||
|
|
|
||||||
2
.github/workflows/docker-build.yml
vendored
2
.github/workflows/docker-build.yml
vendored
|
|
@ -10,7 +10,7 @@ on:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
GHCR_REGISTRY: ghcr.io
|
GHCR_REGISTRY: ghcr.io
|
||||||
GHCR_IMAGE_NAME: ${{ github.repository_owner }}/picoclaw
|
GHCR_IMAGE_NAME: ${{ github.repository_owner }}/jane-ai
|
||||||
DOCKERHUB_REGISTRY: docker.io
|
DOCKERHUB_REGISTRY: docker.io
|
||||||
DOCKERHUB_IMAGE_NAME: ${{ vars.DOCKERHUB_REPOSITORY }}
|
DOCKERHUB_IMAGE_NAME: ${{ vars.DOCKERHUB_REPOSITORY }}
|
||||||
|
|
||||||
|
|
|
||||||
8
.gitignore
vendored
8
.gitignore
vendored
|
|
@ -8,14 +8,14 @@ build/
|
||||||
*.dylib
|
*.dylib
|
||||||
*.test
|
*.test
|
||||||
*.out
|
*.out
|
||||||
/picoclaw
|
/jane-ai
|
||||||
/picoclaw-test
|
/jane-ai-test
|
||||||
cmd/**/workspace
|
cmd/**/workspace
|
||||||
|
|
||||||
# Picoclaw specific
|
# Picoclaw specific
|
||||||
|
|
||||||
# PicoClaw
|
# Jane AI
|
||||||
.picoclaw/
|
.jane-ai/
|
||||||
config.json
|
config.json
|
||||||
sessions/
|
sessions/
|
||||||
build/
|
build/
|
||||||
|
|
|
||||||
|
|
@ -6,22 +6,23 @@ before:
|
||||||
hooks:
|
hooks:
|
||||||
- go mod tidy
|
- go mod tidy
|
||||||
- go generate ./...
|
- go generate ./...
|
||||||
- sh -c 'cd web/frontend && pnpm install && pnpm build:backend'
|
- sh -c 'cd web/frontend && bun install && bun run build:backend'
|
||||||
- go install github.com/tc-hib/go-winres@latest
|
- go install github.com/tc-hib/go-winres@latest
|
||||||
- go-winres make --in web/backend/winres/winres.json --out web/backend/rsrc --product-version={{ .Version }} --file-version={{ .Version }}
|
- go-winres make --in web/backend/winres/winres.json --out web/backend/rsrc --product-version={{ .Version }} --file-version={{ .Version }}
|
||||||
|
|
||||||
builds:
|
builds:
|
||||||
- id: picoclaw
|
- id: jane-ai
|
||||||
|
binary: jane-ai
|
||||||
env:
|
env:
|
||||||
- CGO_ENABLED=0
|
- CGO_ENABLED=0
|
||||||
tags:
|
tags:
|
||||||
- stdjson
|
- stdjson
|
||||||
ldflags:
|
ldflags:
|
||||||
- -s -w
|
- -s -w
|
||||||
- -X github.com/sipeed/picoclaw/pkg/config.Version={{ .Version }}
|
- -X jane/pkg/config.Version={{ .Version }}
|
||||||
- -X github.com/sipeed/picoclaw/pkg/config.GitCommit={{ .ShortCommit }}
|
- -X jane/pkg/config.GitCommit={{ .ShortCommit }}
|
||||||
- -X github.com/sipeed/picoclaw/pkg/config.BuildTime={{ .Date }}
|
- -X jane/pkg/config.BuildTime={{ .Date }}
|
||||||
- -X github.com/sipeed/picoclaw/pkg/config.GoVersion={{ .Env.GOVERSION }}
|
- -X jane/pkg/config.GoVersion={{ .Env.GOVERSION }}
|
||||||
goos:
|
goos:
|
||||||
- linux
|
- linux
|
||||||
- windows
|
- windows
|
||||||
|
|
@ -45,8 +46,8 @@ builds:
|
||||||
- goos: windows
|
- goos: windows
|
||||||
goarch: arm
|
goarch: arm
|
||||||
|
|
||||||
- id: picoclaw-launcher
|
- id: jane-ai-launcher
|
||||||
binary: picoclaw-launcher
|
binary: jane-ai-launcher
|
||||||
env:
|
env:
|
||||||
- CGO_ENABLED=0
|
- CGO_ENABLED=0
|
||||||
tags:
|
tags:
|
||||||
|
|
@ -76,8 +77,8 @@ builds:
|
||||||
- goos: windows
|
- goos: windows
|
||||||
goarch: arm
|
goarch: arm
|
||||||
|
|
||||||
- id: picoclaw-launcher-tui
|
- id: jane-ai-launcher-tui
|
||||||
binary: picoclaw-launcher-tui
|
binary: jane-ai-launcher-tui
|
||||||
env:
|
env:
|
||||||
- CGO_ENABLED=0
|
- CGO_ENABLED=0
|
||||||
tags:
|
tags:
|
||||||
|
|
@ -108,14 +109,14 @@ builds:
|
||||||
goarch: arm
|
goarch: arm
|
||||||
|
|
||||||
dockers_v2:
|
dockers_v2:
|
||||||
- id: picoclaw
|
- id: jane-ai
|
||||||
dockerfile: docker/Dockerfile.goreleaser
|
dockerfile: docker/Dockerfile.goreleaser
|
||||||
extra_files:
|
extra_files:
|
||||||
- docker/entrypoint.sh
|
- docker/entrypoint.sh
|
||||||
ids:
|
ids:
|
||||||
- picoclaw
|
- jane-ai
|
||||||
images:
|
images:
|
||||||
- "ghcr.io/{{ .Env.GITHUB_REPOSITORY_OWNER }}/picoclaw"
|
- "ghcr.io/{{ .Env.GITHUB_REPOSITORY_OWNER }}/jane-ai"
|
||||||
- 'docker.io/{{ .Env.DOCKERHUB_IMAGE_NAME }}'
|
- 'docker.io/{{ .Env.DOCKERHUB_IMAGE_NAME }}'
|
||||||
tags:
|
tags:
|
||||||
- '{{ if isEnvSet "NIGHTLY_BUILD" }}nightly{{ else }}{{ .Tag }}{{ end }}'
|
- '{{ if isEnvSet "NIGHTLY_BUILD" }}nightly{{ else }}{{ .Tag }}{{ end }}'
|
||||||
|
|
@ -125,14 +126,14 @@ dockers_v2:
|
||||||
- linux/arm64
|
- linux/arm64
|
||||||
- linux/riscv64
|
- linux/riscv64
|
||||||
|
|
||||||
- id: picoclaw-launcher
|
- id: jane-ai-launcher
|
||||||
dockerfile: docker/Dockerfile.goreleaser.launcher
|
dockerfile: docker/Dockerfile.goreleaser.launcher
|
||||||
ids:
|
ids:
|
||||||
- picoclaw
|
- jane-ai
|
||||||
- picoclaw-launcher
|
- jane-ai-launcher
|
||||||
- picoclaw-launcher-tui
|
- jane-ai-launcher-tui
|
||||||
images:
|
images:
|
||||||
- "ghcr.io/{{ .Env.GITHUB_REPOSITORY_OWNER }}/picoclaw"
|
- "ghcr.io/{{ .Env.GITHUB_REPOSITORY_OWNER }}/jane-ai"
|
||||||
- 'docker.io/{{ .Env.DOCKERHUB_IMAGE_NAME }}'
|
- 'docker.io/{{ .Env.DOCKERHUB_IMAGE_NAME }}'
|
||||||
tags:
|
tags:
|
||||||
- '{{ if isEnvSet "NIGHTLY_BUILD" }}nightly-launcher{{ else }}{{ .Tag }}-launcher{{ end }}'
|
- '{{ if isEnvSet "NIGHTLY_BUILD" }}nightly-launcher{{ else }}{{ .Tag }}-launcher{{ end }}'
|
||||||
|
|
@ -146,9 +147,9 @@ notarize:
|
||||||
macos:
|
macos:
|
||||||
- enabled: '{{ isEnvSet "MACOS_SIGN_P12" }}'
|
- enabled: '{{ isEnvSet "MACOS_SIGN_P12" }}'
|
||||||
ids:
|
ids:
|
||||||
- picoclaw
|
- jane-ai
|
||||||
- picoclaw-launcher
|
- jane-ai-launcher
|
||||||
- picoclaw-launcher-tui
|
- jane-ai-launcher-tui
|
||||||
sign:
|
sign:
|
||||||
certificate: "{{.Env.MACOS_SIGN_P12}}"
|
certificate: "{{.Env.MACOS_SIGN_P12}}"
|
||||||
password: "{{.Env.MACOS_SIGN_PASSWORD}}"
|
password: "{{.Env.MACOS_SIGN_PASSWORD}}"
|
||||||
|
|
@ -175,32 +176,32 @@ archives:
|
||||||
formats: [zip]
|
formats: [zip]
|
||||||
|
|
||||||
nfpms:
|
nfpms:
|
||||||
- id: picoclaw
|
- id: jane-ai
|
||||||
ids:
|
ids:
|
||||||
- picoclaw
|
- jane-ai
|
||||||
- picoclaw-launcher
|
- jane-ai-launcher
|
||||||
- picoclaw-launcher-tui
|
- jane-ai-launcher-tui
|
||||||
package_name: picoclaw
|
package_name: jane-ai
|
||||||
file_name_template: >-
|
file_name_template: >-
|
||||||
{{ .PackageName }}_
|
{{ .PackageName }}_
|
||||||
{{- if eq .Arch "amd64" }}x86_64
|
{{- if eq .Arch "amd64" }}x86_64
|
||||||
{{- else if eq .Arch "arm64" }}aarch64
|
{{- else if eq .Arch "arm64" }}aarch64
|
||||||
{{- else if eq .Arch "arm" }}armv{{ .Arm }}
|
{{- else if eq .Arch "arm" }}armv{{ .Arm }}
|
||||||
{{- else }}{{ .Arch }}{{ end }}
|
{{- else }}{{ .Arch }}{{ end }}
|
||||||
vendor: picoclaw
|
vendor: jane-ai
|
||||||
homepage: https://github.com/{{ .Env.GITHUB_REPOSITORY_OWNER }}/picoclaw
|
homepage: https://github.com/{{ .Env.GITHUB_REPOSITORY_OWNER }}/jane-ai
|
||||||
maintainer: picoclaw contributors
|
maintainer: jane-ai contributors
|
||||||
description: picoclaw - a tool for managing and running tasks
|
description: jane-ai - a tool for managing and running tasks
|
||||||
license: MIT
|
license: MIT
|
||||||
formats:
|
formats:
|
||||||
- rpm
|
- rpm
|
||||||
- deb
|
- deb
|
||||||
bindir: /usr/bin
|
bindir: /usr/bin
|
||||||
contents:
|
contents:
|
||||||
- src: web/picoclaw-launcher.desktop
|
- src: web/jane-ai-launcher.desktop
|
||||||
dst: /usr/share/applications/picoclaw-launcher.desktop
|
dst: /usr/share/applications/jane-ai-launcher.desktop
|
||||||
- src: web/picoclaw-launcher.png
|
- src: web/jane-ai-launcher.png
|
||||||
dst: /usr/share/icons/hicolor/512x512/apps/picoclaw-launcher.png
|
dst: /usr/share/icons/hicolor/512x512/apps/jane-ai-launcher.png
|
||||||
|
|
||||||
changelog:
|
changelog:
|
||||||
sort: asc
|
sort: asc
|
||||||
|
|
|
||||||
52
Makefile
52
Makefile
|
|
@ -1,9 +1,9 @@
|
||||||
.PHONY: all build install uninstall clean help test
|
.PHONY: all build install uninstall clean help test
|
||||||
|
|
||||||
# Build variables
|
# Build variables
|
||||||
BINARY_NAME=picoclaw
|
BINARY_NAME=jane-ai
|
||||||
BUILD_DIR=build
|
BUILD_DIR=build
|
||||||
CMD_DIR=cmd/$(BINARY_NAME)
|
CMD_DIR=cmd/picoclaw
|
||||||
MAIN_GO=$(CMD_DIR)/main.go
|
MAIN_GO=$(CMD_DIR)/main.go
|
||||||
|
|
||||||
# Version
|
# Version
|
||||||
|
|
@ -11,7 +11,7 @@ VERSION?=$(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
||||||
GIT_COMMIT=$(shell git rev-parse --short=8 HEAD 2>/dev/null || echo "dev")
|
GIT_COMMIT=$(shell git rev-parse --short=8 HEAD 2>/dev/null || echo "dev")
|
||||||
BUILD_TIME=$(shell date +%FT%T%z)
|
BUILD_TIME=$(shell date +%FT%T%z)
|
||||||
GO_VERSION=$(shell $(GO) version | awk '{print $$3}')
|
GO_VERSION=$(shell $(GO) version | awk '{print $$3}')
|
||||||
CONFIG_PKG=github.com/sipeed/picoclaw/pkg/config
|
CONFIG_PKG=jane/pkg/config
|
||||||
LDFLAGS=-ldflags "-X $(CONFIG_PKG).Version=$(VERSION) -X $(CONFIG_PKG).GitCommit=$(GIT_COMMIT) -X $(CONFIG_PKG).BuildTime=$(BUILD_TIME) -X $(CONFIG_PKG).GoVersion=$(GO_VERSION) -s -w"
|
LDFLAGS=-ldflags "-X $(CONFIG_PKG).Version=$(VERSION) -X $(CONFIG_PKG).GitCommit=$(GIT_COMMIT) -X $(CONFIG_PKG).BuildTime=$(BUILD_TIME) -X $(CONFIG_PKG).GoVersion=$(GO_VERSION) -s -w"
|
||||||
|
|
||||||
# Go variables
|
# Go variables
|
||||||
|
|
@ -50,8 +50,8 @@ INSTALL_MAN_DIR=$(INSTALL_PREFIX)/share/man/man1
|
||||||
INSTALL_TMP_SUFFIX=.new
|
INSTALL_TMP_SUFFIX=.new
|
||||||
|
|
||||||
# Workspace and Skills
|
# Workspace and Skills
|
||||||
PICOCLAW_HOME?=$(HOME)/.picoclaw
|
JANE_AI_HOME?=$(HOME)/.jane-ai
|
||||||
WORKSPACE_DIR?=$(PICOCLAW_HOME)/workspace
|
WORKSPACE_DIR?=$(JANE_AI_HOME)/workspace
|
||||||
WORKSPACE_SKILLS_DIR=$(WORKSPACE_DIR)/skills
|
WORKSPACE_SKILLS_DIR=$(WORKSPACE_DIR)/skills
|
||||||
BUILTIN_SKILLS_DIR=$(CURDIR)/skills
|
BUILTIN_SKILLS_DIR=$(CURDIR)/skills
|
||||||
|
|
||||||
|
|
@ -103,7 +103,7 @@ generate:
|
||||||
@$(GO) generate ./...
|
@$(GO) generate ./...
|
||||||
@echo "Run generate complete"
|
@echo "Run generate complete"
|
||||||
|
|
||||||
## build: Build the picoclaw binary for current platform
|
## build: Build the jane-ai binary for current platform
|
||||||
build: generate
|
build: generate
|
||||||
@echo "Building $(BINARY_NAME) for $(PLATFORM)/$(ARCH)..."
|
@echo "Building $(BINARY_NAME) for $(PLATFORM)/$(ARCH)..."
|
||||||
@mkdir -p $(BUILD_DIR)
|
@mkdir -p $(BUILD_DIR)
|
||||||
|
|
@ -111,17 +111,17 @@ build: generate
|
||||||
@echo "Build complete: $(BINARY_PATH)"
|
@echo "Build complete: $(BINARY_PATH)"
|
||||||
@ln -sf $(BINARY_NAME)-$(PLATFORM)-$(ARCH) $(BUILD_DIR)/$(BINARY_NAME)
|
@ln -sf $(BINARY_NAME)-$(PLATFORM)-$(ARCH) $(BUILD_DIR)/$(BINARY_NAME)
|
||||||
|
|
||||||
## build-launcher: Build the picoclaw-launcher (web console) binary
|
## build-launcher: Build the jane-ai-launcher (web console) binary
|
||||||
build-launcher:
|
build-launcher:
|
||||||
@echo "Building picoclaw-launcher for $(PLATFORM)/$(ARCH)..."
|
@echo "Building jane-ai-launcher for $(PLATFORM)/$(ARCH)..."
|
||||||
@mkdir -p $(BUILD_DIR)
|
@mkdir -p $(BUILD_DIR)
|
||||||
@if [ ! -f web/backend/dist/index.html ]; then \
|
@if [ ! -f web/backend/dist/index.html ]; then \
|
||||||
echo "Building frontend..."; \
|
echo "Building frontend..."; \
|
||||||
cd web/frontend && pnpm install && pnpm build:backend; \
|
cd web/frontend && bun install && bun run build:backend; \
|
||||||
fi
|
fi
|
||||||
@$(GO) build $(GOFLAGS) -o $(BUILD_DIR)/picoclaw-launcher-$(PLATFORM)-$(ARCH) ./web/backend
|
@$(GO) build $(GOFLAGS) -o $(BUILD_DIR)/jane-ai-launcher-$(PLATFORM)-$(ARCH) ./web/backend
|
||||||
@ln -sf picoclaw-launcher-$(PLATFORM)-$(ARCH) $(BUILD_DIR)/picoclaw-launcher
|
@ln -sf jane-ai-launcher-$(PLATFORM)-$(ARCH) $(BUILD_DIR)/jane-ai-launcher
|
||||||
@echo "Build complete: $(BUILD_DIR)/picoclaw-launcher"
|
@echo "Build complete: $(BUILD_DIR)/jane-ai-launcher"
|
||||||
|
|
||||||
## build-whatsapp-native: Build with WhatsApp native (whatsmeow) support; larger binary
|
## build-whatsapp-native: Build with WhatsApp native (whatsmeow) support; larger binary
|
||||||
build-whatsapp-native: generate
|
build-whatsapp-native: generate
|
||||||
|
|
@ -167,7 +167,7 @@ build-linux-mipsle: generate
|
||||||
build-pi-zero: build-linux-arm build-linux-arm64
|
build-pi-zero: build-linux-arm build-linux-arm64
|
||||||
@echo "Pi Zero 2 W builds: $(BUILD_DIR)/$(BINARY_NAME)-linux-arm (32-bit), $(BUILD_DIR)/$(BINARY_NAME)-linux-arm64 (64-bit)"
|
@echo "Pi Zero 2 W builds: $(BUILD_DIR)/$(BINARY_NAME)-linux-arm (32-bit), $(BUILD_DIR)/$(BINARY_NAME)-linux-arm64 (64-bit)"
|
||||||
|
|
||||||
## build-all: Build picoclaw for all platforms
|
## build-all: Build jane-ai for all platforms
|
||||||
build-all: generate
|
build-all: generate
|
||||||
@echo "Building for multiple platforms..."
|
@echo "Building for multiple platforms..."
|
||||||
@mkdir -p $(BUILD_DIR)
|
@mkdir -p $(BUILD_DIR)
|
||||||
|
|
@ -183,7 +183,7 @@ build-all: generate
|
||||||
GOOS=windows GOARCH=amd64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-windows-amd64.exe ./$(CMD_DIR)
|
GOOS=windows GOARCH=amd64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-windows-amd64.exe ./$(CMD_DIR)
|
||||||
@echo "All builds complete"
|
@echo "All builds complete"
|
||||||
|
|
||||||
## install: Install picoclaw to system and copy builtin skills
|
## install: Install jane-ai to system and copy builtin skills
|
||||||
install: build
|
install: build
|
||||||
@echo "Installing $(BINARY_NAME)..."
|
@echo "Installing $(BINARY_NAME)..."
|
||||||
@mkdir -p $(INSTALL_BIN_DIR)
|
@mkdir -p $(INSTALL_BIN_DIR)
|
||||||
|
|
@ -194,7 +194,7 @@ install: build
|
||||||
@echo "Installed binary to $(INSTALL_BIN_DIR)/$(BINARY_NAME)"
|
@echo "Installed binary to $(INSTALL_BIN_DIR)/$(BINARY_NAME)"
|
||||||
@echo "Installation complete!"
|
@echo "Installation complete!"
|
||||||
|
|
||||||
## uninstall: Remove picoclaw from system
|
## uninstall: Remove jane-ai from system
|
||||||
uninstall:
|
uninstall:
|
||||||
@echo "Uninstalling $(BINARY_NAME)..."
|
@echo "Uninstalling $(BINARY_NAME)..."
|
||||||
@rm -f $(INSTALL_BIN_DIR)/$(BINARY_NAME)
|
@rm -f $(INSTALL_BIN_DIR)/$(BINARY_NAME)
|
||||||
|
|
@ -202,11 +202,11 @@ uninstall:
|
||||||
@echo "Note: Only the executable file has been deleted."
|
@echo "Note: Only the executable file has been deleted."
|
||||||
@echo "If you need to delete all configurations (config.json, workspace, etc.), run 'make uninstall-all'"
|
@echo "If you need to delete all configurations (config.json, workspace, etc.), run 'make uninstall-all'"
|
||||||
|
|
||||||
## uninstall-all: Remove picoclaw and all data
|
## uninstall-all: Remove jane-ai and all data
|
||||||
uninstall-all:
|
uninstall-all:
|
||||||
@echo "Removing workspace and skills..."
|
@echo "Removing workspace and skills..."
|
||||||
@rm -rf $(PICOCLAW_HOME)
|
@rm -rf $(JANE_AI_HOME)
|
||||||
@echo "Removed workspace: $(PICOCLAW_HOME)"
|
@echo "Removed workspace: $(JANE_AI_HOME)"
|
||||||
@echo "Complete uninstallation done!"
|
@echo "Complete uninstallation done!"
|
||||||
|
|
||||||
## clean: Remove build artifacts
|
## clean: Remove build artifacts
|
||||||
|
|
@ -248,7 +248,7 @@ update-deps:
|
||||||
## check: Run vet, fmt, and verify dependencies
|
## check: Run vet, fmt, and verify dependencies
|
||||||
check: deps fmt vet test
|
check: deps fmt vet test
|
||||||
|
|
||||||
## run: Build and run picoclaw
|
## run: Build and run jane-ai
|
||||||
run: build
|
run: build
|
||||||
@$(BUILD_DIR)/$(BINARY_NAME) $(ARGS)
|
@$(BUILD_DIR)/$(BINARY_NAME) $(ARGS)
|
||||||
|
|
||||||
|
|
@ -268,19 +268,19 @@ docker-test:
|
||||||
@chmod +x scripts/test-docker-mcp.sh
|
@chmod +x scripts/test-docker-mcp.sh
|
||||||
@./scripts/test-docker-mcp.sh
|
@./scripts/test-docker-mcp.sh
|
||||||
|
|
||||||
## docker-run: Run picoclaw gateway in Docker (Alpine-based)
|
## docker-run: Run jane-ai gateway in Docker (Alpine-based)
|
||||||
docker-run:
|
docker-run:
|
||||||
docker compose -f docker/docker-compose.yml --profile gateway up
|
docker compose -f docker/docker-compose.yml --profile gateway up
|
||||||
|
|
||||||
## docker-run-full: Run picoclaw gateway in Docker (full-featured)
|
## docker-run-full: Run jane-ai gateway in Docker (full-featured)
|
||||||
docker-run-full:
|
docker-run-full:
|
||||||
docker compose -f docker/docker-compose.full.yml --profile gateway up
|
docker compose -f docker/docker-compose.full.yml --profile gateway up
|
||||||
|
|
||||||
## docker-run-agent: Run picoclaw agent in Docker (interactive, Alpine-based)
|
## docker-run-agent: Run jane-ai agent in Docker (interactive, Alpine-based)
|
||||||
docker-run-agent:
|
docker-run-agent:
|
||||||
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent
|
docker compose -f docker/docker-compose.yml run --rm picoclaw-agent
|
||||||
|
|
||||||
## docker-run-agent-full: Run picoclaw agent in Docker (interactive, full-featured)
|
## docker-run-agent-full: Run jane-ai agent in Docker (interactive, full-featured)
|
||||||
docker-run-agent-full:
|
docker-run-agent-full:
|
||||||
docker compose -f docker/docker-compose.full.yml run --rm picoclaw-agent
|
docker compose -f docker/docker-compose.full.yml run --rm picoclaw-agent
|
||||||
|
|
||||||
|
|
@ -288,11 +288,11 @@ docker-run-agent-full:
|
||||||
docker-clean:
|
docker-clean:
|
||||||
docker compose -f docker/docker-compose.yml down -v
|
docker compose -f docker/docker-compose.yml down -v
|
||||||
docker compose -f docker/docker-compose.full.yml down -v
|
docker compose -f docker/docker-compose.full.yml down -v
|
||||||
docker rmi picoclaw:latest picoclaw:full 2>/dev/null || true
|
docker rmi jane-ai:latest jane-ai:full 2>/dev/null || true
|
||||||
|
|
||||||
## help: Show this help message
|
## help: Show this help message
|
||||||
help:
|
help:
|
||||||
@echo "picoclaw Makefile"
|
@echo "jane-ai Makefile"
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Usage:"
|
@echo "Usage:"
|
||||||
@echo " make [target]"
|
@echo " make [target]"
|
||||||
|
|
@ -310,7 +310,7 @@ help:
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Environment Variables:"
|
@echo "Environment Variables:"
|
||||||
@echo " INSTALL_PREFIX # Installation prefix (default: ~/.local)"
|
@echo " INSTALL_PREFIX # Installation prefix (default: ~/.local)"
|
||||||
@echo " WORKSPACE_DIR # Workspace directory (default: ~/.picoclaw/workspace)"
|
@echo " WORKSPACE_DIR # Workspace directory (default: ~/.jane-ai/workspace)"
|
||||||
@echo " VERSION # Version string (default: git describe)"
|
@echo " VERSION # Version string (default: git describe)"
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Current Configuration:"
|
@echo "Current Configuration:"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Stage 1: Build the picoclaw binary
|
# Stage 1: Build the jane-ai binary
|
||||||
# ============================================================
|
# ============================================================
|
||||||
FROM golang:1.25-alpine AS builder
|
FROM golang:1.25-alpine AS builder
|
||||||
|
|
||||||
|
|
@ -27,17 +27,17 @@ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||||
CMD wget -q --spider http://localhost:18790/health || exit 1
|
CMD wget -q --spider http://localhost:18790/health || exit 1
|
||||||
|
|
||||||
# Copy binary
|
# Copy binary
|
||||||
COPY --from=builder /src/build/picoclaw /usr/local/bin/picoclaw
|
COPY --from=builder /src/build/jane-ai /usr/local/bin/jane-ai
|
||||||
|
|
||||||
# Create non-root user and group
|
# Create non-root user and group
|
||||||
RUN addgroup -g 1000 picoclaw && \
|
RUN addgroup -g 1000 jane-ai && \
|
||||||
adduser -D -u 1000 -G picoclaw picoclaw
|
adduser -D -u 1000 -G jane-ai jane-ai
|
||||||
|
|
||||||
# Switch to non-root user
|
# Switch to non-root user
|
||||||
USER picoclaw
|
USER jane-ai
|
||||||
|
|
||||||
# Run onboard to create initial directories and config
|
# Run onboard to create initial directories and config
|
||||||
RUN /usr/local/bin/picoclaw onboard
|
RUN /usr/local/bin/jane-ai onboard
|
||||||
|
|
||||||
ENTRYPOINT ["picoclaw"]
|
ENTRYPOINT ["jane-ai"]
|
||||||
CMD ["gateway"]
|
CMD ["gateway"]
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Stage 1: Build the picoclaw binary
|
# Stage 1: Build the jane-ai binary
|
||||||
# ============================================================
|
# ============================================================
|
||||||
FROM golang:1.26.0-alpine AS builder
|
FROM golang:1.26.0-alpine AS builder
|
||||||
|
|
||||||
|
|
@ -35,10 +35,10 @@ RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
|
||||||
uv --version
|
uv --version
|
||||||
|
|
||||||
# Copy binary
|
# Copy binary
|
||||||
COPY --from=builder /src/build/picoclaw /usr/local/bin/picoclaw
|
COPY --from=builder /src/build/jane-ai /usr/local/bin/jane-ai
|
||||||
|
|
||||||
# Create picoclaw home directory
|
# Create jane-ai home directory
|
||||||
RUN /usr/local/bin/picoclaw onboard
|
RUN /usr/local/bin/jane-ai onboard
|
||||||
|
|
||||||
ENTRYPOINT ["picoclaw"]
|
ENTRYPOINT ["jane-ai"]
|
||||||
CMD ["gateway"]
|
CMD ["gateway"]
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ ARG TARGETPLATFORM
|
||||||
|
|
||||||
RUN apk add --no-cache ca-certificates tzdata
|
RUN apk add --no-cache ca-certificates tzdata
|
||||||
|
|
||||||
COPY $TARGETPLATFORM/picoclaw /usr/local/bin/picoclaw
|
COPY $TARGETPLATFORM/jane-ai /usr/local/bin/jane-ai
|
||||||
COPY docker/entrypoint.sh /entrypoint.sh
|
COPY docker/entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
RUN chmod +x /entrypoint.sh
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@ ARG TARGETPLATFORM
|
||||||
|
|
||||||
RUN apk add --no-cache ca-certificates tzdata
|
RUN apk add --no-cache ca-certificates tzdata
|
||||||
|
|
||||||
COPY $TARGETPLATFORM/picoclaw /usr/local/bin/picoclaw
|
COPY $TARGETPLATFORM/jane-ai /usr/local/bin/jane-ai
|
||||||
COPY $TARGETPLATFORM/picoclaw-launcher /usr/local/bin/picoclaw-launcher
|
COPY $TARGETPLATFORM/jane-ai-launcher /usr/local/bin/jane-ai-launcher
|
||||||
COPY $TARGETPLATFORM/picoclaw-launcher-tui /usr/local/bin/picoclaw-launcher-tui
|
COPY $TARGETPLATFORM/jane-ai-launcher-tui /usr/local/bin/jane-ai-launcher-tui
|
||||||
|
|
||||||
ENTRYPOINT ["picoclaw-launcher"]
|
ENTRYPOINT ["jane-ai-launcher"]
|
||||||
CMD ["-public", "-no-browser"]
|
CMD ["-public", "-no-browser"]
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ RUN go mod tidy && make build && make build-launcher
|
||||||
|
|
||||||
FROM alpine:3.23
|
FROM alpine:3.23
|
||||||
RUN apk add --no-cache ca-certificates tzdata
|
RUN apk add --no-cache ca-certificates tzdata
|
||||||
COPY --from=builder /src/build/picoclaw /usr/local/bin/picoclaw
|
COPY --from=builder /src/build/jane-ai /usr/local/bin/jane-ai
|
||||||
COPY --from=builder /src/build/picoclaw-launcher /usr/local/bin/picoclaw-launcher
|
COPY --from=builder /src/build/jane-ai-launcher /usr/local/bin/jane-ai-launcher
|
||||||
ENTRYPOINT ["picoclaw-launcher"]
|
ENTRYPOINT ["jane-ai-launcher"]
|
||||||
CMD ["-public", "-no-browser"]
|
CMD ["-public", "-no-browser"]
|
||||||
|
|
|
||||||
4
web/backend/.gitignore
vendored
4
web/backend/.gitignore
vendored
|
|
@ -5,7 +5,7 @@
|
||||||
*.dylib
|
*.dylib
|
||||||
*.test
|
*.test
|
||||||
*.out
|
*.out
|
||||||
picoclaw-web
|
jane-ai-web
|
||||||
|
|
||||||
# Frontend build artifacts (embedded by Go)
|
# Frontend build artifacts (embedded by Go)
|
||||||
dist/*
|
dist/*
|
||||||
|
|
@ -16,4 +16,4 @@ dist/*
|
||||||
|
|
||||||
# Editors
|
# Editors
|
||||||
.vscode/
|
.vscode/
|
||||||
.idea/
|
.idea/
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ func isCmdProcessAliveLocked(cmd *exec.Cmd) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handler) startGatewayLocked() (int, error) {
|
func (h *Handler) startGatewayLocked() (int, error) {
|
||||||
// Locate the picoclaw executable
|
// Locate the Jane AI executable
|
||||||
execPath := utils.FindPicoclawBinary()
|
execPath := utils.FindPicoclawBinary()
|
||||||
|
|
||||||
cmd := exec.Command(execPath, "gateway")
|
cmd := exec.Command(execPath, "gateway")
|
||||||
|
|
@ -173,7 +173,7 @@ func (h *Handler) startGatewayLocked() (int, error) {
|
||||||
|
|
||||||
gateway.cmd = cmd
|
gateway.cmd = cmd
|
||||||
pid := cmd.Process.Pid
|
pid := cmd.Process.Pid
|
||||||
logger.InfoCF("gateway", "Started picoclaw gateway", map[string]any{"pid": pid, "execPath": execPath})
|
logger.InfoCF("gateway", "Started Jane AI gateway", map[string]any{"pid": pid, "execPath": execPath})
|
||||||
|
|
||||||
// Broadcast starting event
|
// Broadcast starting event
|
||||||
gateway.events.Broadcast(GatewayEvent{Status: "starting", PID: pid})
|
gateway.events.Broadcast(GatewayEvent{Status: "starting", PID: pid})
|
||||||
|
|
@ -235,7 +235,7 @@ func (h *Handler) startGatewayLocked() (int, error) {
|
||||||
return pid, nil
|
return pid, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// handleGatewayStart starts the picoclaw gateway subprocess.
|
// handleGatewayStart starts the Jane AI gateway subprocess.
|
||||||
//
|
//
|
||||||
// POST /api/gateway/start
|
// POST /api/gateway/start
|
||||||
func (h *Handler) handleGatewayStart(w http.ResponseWriter, r *http.Request) {
|
func (h *Handler) handleGatewayStart(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
|
||||||
|
|
@ -492,7 +492,7 @@ func (h *Handler) handleOAuthLogout(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
func renderOAuthCallbackPage(w http.ResponseWriter, flowID, status, title, errMsg string) {
|
func renderOAuthCallbackPage(w http.ResponseWriter, flowID, status, title, errMsg string) {
|
||||||
payload := map[string]string{
|
payload := map[string]string{
|
||||||
"type": "picoclaw-oauth-result",
|
"type": "jane-ai-oauth-result",
|
||||||
"flowId": flowID,
|
"flowId": flowID,
|
||||||
"status": status,
|
"status": status,
|
||||||
}
|
}
|
||||||
|
|
@ -515,7 +515,7 @@ func renderOAuthCallbackPage(w http.ResponseWriter, flowID, status, title, errMs
|
||||||
|
|
||||||
_, _ = fmt.Fprintf(
|
_, _ = fmt.Fprintf(
|
||||||
w,
|
w,
|
||||||
"<!doctype html><html><head><meta charset=\"utf-8\"><title>PicoClaw OAuth</title></head><body><script>(function(){var payload=%s;var hasOpener=false;try{if(window.opener&&!window.opener.closed){window.opener.postMessage(payload,window.location.origin);hasOpener=true}}catch(e){}var target='/credentials?oauth_flow_id='+encodeURIComponent(payload.flowId||'')+'&oauth_status='+encodeURIComponent(payload.status||'');setTimeout(function(){if(hasOpener){window.close();return}window.location.replace(target)},800)})();</script><div style=\"font-family:Inter,system-ui,sans-serif;padding:24px\"><h2>%s</h2><p>%s</p><p>You can close this window.</p></div></body></html>",
|
"<!doctype html><html><head><meta charset=\"utf-8\"><title>Jane AI OAuth</title></head><body><script>(function(){var payload=%s;var hasOpener=false;try{if(window.opener&&!window.opener.closed){window.opener.postMessage(payload,window.location.origin);hasOpener=true}}catch(e){}var target='/credentials?oauth_flow_id='+encodeURIComponent(payload.flowId||'')+'&oauth_status='+encodeURIComponent(payload.status||'');setTimeout(function(){if(hasOpener){window.close();return}window.location.replace(target)},800)})();</script><div style=\"font-family:Inter,system-ui,sans-serif;padding:24px\"><h2>%s</h2><p>%s</p><p>You can close this window.</p></div></body></html>",
|
||||||
string(payloadJSON),
|
string(payloadJSON),
|
||||||
html.EscapeString(title),
|
html.EscapeString(title),
|
||||||
html.EscapeString(message),
|
html.EscapeString(message),
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
autoStartEntryName = "PicoClawLauncher"
|
autoStartEntryName = "JaneAILauncher"
|
||||||
launchAgentLabel = "io.picoclaw.launcher"
|
launchAgentLabel = "io.jane-ai.launcher"
|
||||||
)
|
)
|
||||||
|
|
||||||
type autoStartRequest struct {
|
type autoStartRequest struct {
|
||||||
|
|
@ -215,7 +215,7 @@ func buildDarwinPlist(exePath string, args []string) string {
|
||||||
|
|
||||||
func linuxAutoStartPath() string {
|
func linuxAutoStartPath() string {
|
||||||
home, _ := os.UserHomeDir()
|
home, _ := os.UserHomeDir()
|
||||||
return filepath.Join(home, ".config", "autostart", "picoclaw-web.desktop")
|
return filepath.Join(home, ".config", "autostart", "jane-ai-web.desktop")
|
||||||
}
|
}
|
||||||
|
|
||||||
func shellQuote(s string) string {
|
func shellQuote(s string) string {
|
||||||
|
|
@ -247,8 +247,8 @@ func setLinuxAutoStart(enabled bool, exePath string, args []string) error {
|
||||||
"[Desktop Entry]",
|
"[Desktop Entry]",
|
||||||
"Type=Application",
|
"Type=Application",
|
||||||
"Version=1.0",
|
"Version=1.0",
|
||||||
"Name=PicoClaw Web",
|
"Name=Jane AI Web",
|
||||||
"Comment=Start PicoClaw Web on login",
|
"Comment=Start Jane AI Web on login",
|
||||||
"Exec=" + buildLinuxExecLine(exePath, args),
|
"Exec=" + buildLinuxExecLine(exePath, args),
|
||||||
"Terminal=false",
|
"Terminal=false",
|
||||||
"X-GNOME-Autostart-enabled=true",
|
"X-GNOME-Autostart-enabled=true",
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Loading…
Add table
Reference in a new issue