Skip to content
← Public packages

@kentcdodds/devin

Start, monitor, and manage Devin sessions, knowledge, playbooks, and schedules via the Devin v3 API

src/index.ts

61 lines · 2.9 KB · TypeScript
import * as knowledge from './knowledge.ts'
import * as playbooks from './playbooks.ts'
import * as request from './request.ts'
import * as reviews from './reviews.ts'
import * as schedules from './schedules.ts'
import * as self from './self.ts'
import * as sessions from './sessions.ts'
import * as usage from './usage.ts'

export { knowledge, playbooks, request, reviews, schedules, self, sessions, usage }

/**
 * Describe the Devin v3 API package: auth, org settings, and export map.
 * Use for discovery before calling sessions, knowledge, playbooks, or request.
 *
 * @returns Package overview including docs, auth notes, and export purposes
 *
 * @example
 * import describeDevin from 'kody:@kentcdodds/devin'
 * const info = await describeDevin()
 * // => { packageId: 'devin', exports: { './sessions': '...', ... } }
 */
export default async function describeDevinPackage() {
	return {
		packageId: 'devin',
		name: '@kentcdodds/devin',
		version: '1.0.0',
		docs: ['https://docs.devin.ai/api-reference', 'https://docs.devin.ai/v3-openapi.yaml'],
		transport:
			'compact devinRequestRaw helper against https://api.devin.ai (Bearer {{secret:devinServiceUserKey}})',
		auth: {
			required: ['devinServiceUserKey'],
			settings: ['devinOrgId'],
			note: "v3 service user key (cog_ prefix). Legacy apk_ v1/v2 keys return 403 on v3. Every helper takes an optional orgId override; otherwise destinOrgId in this package's storage is used. Update it with ./settings ({ orgId }).",
		},
		exports: {
			'.': 'Package overview (this export)',
			'./self': 'whoami — identity/permissions check for the saved credential',
			'./sessions':
				'listSessions, listAllSessions, createSession, getSession, getSessionStatus, listMessages, sendMessage, terminateSession, archive/unarchive, get/setSessionTags, listSessionAttachments',
			'./knowledge': 'listNotes, getNote, createNote, updateNote, deleteNote, listFolders',
			'./playbooks':
				'listPlaybooks, getPlaybook, createPlaybook, updatePlaybook, deletePlaybook',
			'./schedules':
				'listSchedules, getSchedule, createSchedule, updateSchedule, deleteSchedule',
			'./reviews': 'getPrReview (null when unreviewed), createPrReview',
			'./usage':
				'dailyConsumption (+ per user/service user/session), usageMetrics, sessionMetrics, prMetrics, sessionInsights, generateSessionInsights',
			'./request':
				'Raw api.devin.ai escape hatch ({org_id} is interpolated) + DevinApiError',
			'./settings':
				"Read or update destinOrgId in this package's storage (pass { orgId })",
			'./migrate-from-values':
				"Copy leftover destinOrgId user value into this package's storage",
		},
		costNote:
			'createSession, createPrReview, and generateSessionInsights consume ACUs; terminateSession and the delete helpers are destructive — confirm intent before calling.',
		notWrapped:
			'Enterprise admin, members/roles, org secrets, code scans, repo indexing, and snapshot blueprints — use ./request.',
	}
}