mirror of
https://github.com/hanzoai/insights.git
synced 2026-11-03 00:52:32 +00:00
716 files rewritten, 30 renamed, same family mapping as the frontend pass.
Held back, and each for a reason rather than by oversight:
db_table values insights_hogfunction, insights_hogflow,
insights_hogfunctiontemplate, hogflow_templates.
Renaming a table is ALTER TABLE, so it ships as a
migration with the raw SQL in nodejs that names it.
hog_invocation_results a Datastore table with Kafka engine tables on it
products/review_hog the module path is the Django app path; moving it
moves app_label and every migration is recorded under
(app_label, name). That is the same history break as
renaming a migration file, one level up.
*/migrations/* five files, untouched
whogho an integration vendor
Checked: 395 of 397 changed Python files compile. The two that do not —
insightsql/database/database.py and temporal/schedule.py — fail identically at
origin/main under the same interpreter, because they use `type X = ...` and
`except*`, which need the 3.13 this repo pins and not the 3.9 doing the check.
Running the check against the original is what told those apart from a real
break.
Co-authored-by: Hanzo Dev <[email protected]>
68 lines
2.7 KiB
TypeScript
68 lines
2.7 KiB
TypeScript
import { combineUrl } from 'kea-router'
|
|
|
|
import { urls } from 'scenes/urls'
|
|
|
|
import { FileSystemIconType, ProductItemCategory, ProductKey } from '~/queries/schema/schema-general'
|
|
|
|
import { FileSystemIconColor, ProductManifest } from '../../frontend/src/types'
|
|
|
|
export const manifest: ProductManifest = {
|
|
name: 'Skills',
|
|
scenes: {
|
|
Skills: {
|
|
import: () => import('./frontend/LLMSkillsScene'),
|
|
projectBased: true,
|
|
name: 'Skills',
|
|
description: 'Manage versioned agent skills that any MCP-connected agent can discover and use.',
|
|
layout: 'app-container',
|
|
iconType: 'llm_prompts',
|
|
},
|
|
Skill: {
|
|
import: () => import('./frontend/LLMSkillScene'),
|
|
projectBased: true,
|
|
name: 'Skill',
|
|
layout: 'app-container',
|
|
iconType: 'llm_prompts',
|
|
},
|
|
},
|
|
routes: {
|
|
'/skills': ['Skills', 'skills'],
|
|
// Category tabs (e.g. /skills/scouts) must precede the `/skills/:name` wildcard so they
|
|
// aren't captured as a skill named after the tab. Route order = match precedence.
|
|
'/skills/scouts': ['Skills', 'skillsScouts'],
|
|
'/skills/review-script': ['Skills', 'skillsReview'],
|
|
'/skills/:name': ['Skill', 'skill'],
|
|
},
|
|
redirects: {
|
|
'/prompt-management/skills': (_params, searchParams, hashParams) =>
|
|
combineUrl(urls.skills(), searchParams, hashParams).url,
|
|
'/prompt-management/skills/:name': (params, searchParams, hashParams) =>
|
|
combineUrl(urls.skill(params.name), searchParams, hashParams).url,
|
|
'/llm-analytics/skills': (_params, searchParams, hashParams) =>
|
|
combineUrl(urls.skills(), searchParams, hashParams).url,
|
|
'/llm-analytics/skills/:name': (params, searchParams, hashParams) =>
|
|
combineUrl(urls.skill(params.name), searchParams, hashParams).url,
|
|
},
|
|
urls: {
|
|
skills: (): string => '/skills',
|
|
// A category tab under /skills (e.g. /skills/scouts). The tab key is the URL segment.
|
|
skillsCategoryTab: (categoryTab: string): string => `/skills/${categoryTab}`,
|
|
skill: (name: string, params?: { file?: string; version?: number }): string =>
|
|
combineUrl(`/skills/${name}`, params).url,
|
|
},
|
|
fileSystemTypes: {},
|
|
treeItemsNew: [],
|
|
treeItemsProducts: [
|
|
{
|
|
path: 'Skills',
|
|
intents: [ProductKey.SKILLS],
|
|
category: ProductItemCategory.TOOLS,
|
|
type: 'llm_skills',
|
|
iconType: 'llm_prompts' as FileSystemIconType,
|
|
iconColor: ['var(--color-product-llm-analytics-light)'] as FileSystemIconColor,
|
|
href: urls.skills(),
|
|
sceneKey: 'Skills',
|
|
},
|
|
],
|
|
}
|